自己結合の使用:
これにより、複数ある場合に、一致するサブキー値を持つすべての値が返されます。
SELECT a.value
FROM TABLE a
JOIN (SELECT MAX(t.subkey) AS max_subkey
FROM TABLE t
WHERE t.key = 1) b ON b.max_subkey = a.subkey
WHERE a.key = 1
RANK&CTE(SQL Server 2005以降)の使用:
これにより、複数ある場合に、一致するサブキー値を持つすべての値が返されます。
WITH summary AS (
SELECT t.*,
RANK() OVER(ORDER BY t.subkey DESC) AS rank
FROM TABLE t
WHERE t.key = 1)
SELECT s.value
FROM summary s
WHERE s.rank = 1
ROW_NUMBERとCTE(SQL Server 2005以降)の使用:
これにより、同じサブキー値を持つ行が複数ある場合でも、1つの行が返されます...
WITH summary AS (
SELECT t.*,
ROW_NUMBER() OVER(ORDER BY t.subkey DESC) AS rank
FROM TABLE t
WHERE t.key = 1)
SELECT s.value
FROM summary s
WHERE s.rank = 1
TOPの使用:
これにより、同じサブキー値を持つ行が複数ある場合でも、1つの行が返されます...
SELECT TOP 1
t.value
FROM TABLE t
WHERE t.key = 1
ORDER BY t.subkey DESC