私は、以下のように、キー列と他の列を持つテーブルを持っています。セレクティブ列の値に基づく行の行SQL
KeyColumnはCOL1、COL2、COL3、COL4の組み合わせです。 与えられたキー列の値に対して、私はCol5の値が異なります。 キー列の値がCol5に複数の値を持つ場合は、 'O'以外を考慮してください。すべてのスタオが「O」であれば、「O」を考慮する。上記の場合
私はほとんどのデータベースではイエロー、グリーン、ブルーとオレンジ私は、以下のように、キー列と他の列を持つテーブルを持っています。セレクティブ列の値に基づく行の行SQL
KeyColumnはCOL1、COL2、COL3、COL4の組み合わせです。 与えられたキー列の値に対して、私はCol5の値が異なります。 キー列の値がCol5に複数の値を持つ場合は、 'O'以外を考慮してください。すべてのスタオが「O」であれば、「O」を考慮する。上記の場合
私はほとんどのデータベースではイエロー、グリーン、ブルーとオレンジゴードンのクエリは、有効なアイデアを持っていますが、それは可能であれば非'O」行を選んについてのあなたの規則に従っていません。
WITH
CTE
AS
(
SELECT
KeyColumn
,Col1
,Col2
,Col3
,Col4
,Col5
,Col6
,ROW_NUMBER() OVER (PARTITION BY KeyColumn
ORDER BY
CASE WHEN Col5 = 'O' THEN 1 ELSE 0 END -- put 'O' last
,Col5) as rn -- pick first non-O row
-- you can choose other column(s) instead of Col5 here
FROM YourTable
)
SELECT
KeyColumn
,Col1
,Col2
,Col3
,Col4
,Col5
,Col6
FROM CTE
WHERE rn = 1
;
から4 rows.Eachつを取得する必要があり、あなたは、ANSI標準row_number()
機能を使用します。このような何か:
select t.*
from (select t.*,
row_number() over (partition by keycolumn order by keycolumn) as seqnum
from t
) t
where seqnum = 1;
行番号は一種の並べ替えのためのものです。しかし、ここではそうではありません。 –
(1)使用しているデータベースで質問にタグを付けてください。 –