2

SQLの結果に列A、B、Cがあります。列Bに重複するレコードがある可能性があります。B値の重複を避けるために、Cの値を確認する必要があります。列Cの値が0の場合は、その特定の行のみをBで選択する必要があります。

この処理は、重複するレコードに対してのみ実行する必要があります。

Column A | Column B | Column C

value 1  | value 2  | 1

value 3  | value 2  | 0

上記のコードのみの行では、値3 | 値2| 0、クエリ結果で選択する必要があります

4

2 に答える 2

1

これを試して:

SELECT
    A, B, C
FROM
(
SELECT
    ROW_NUMBER() OVER (PARTITION BY B ORDER BY CASE WHEN C = 0 THEN 0 ELSE 1 END) rn,
    A, B, C
FROM Tbl
) A
WHERE rn = 1

の最小値Cが0の場合、。だけで可能ORDER BYですC

于 2013-02-06T07:13:58.870 に答える
0

もう1つのオプション

SELECT  t1.ColumnA, t1.ColumnB, t1.ColumnC
FROM dbo.test32 t1
WHERE NOT EXISTS (
                  SELECT 1
                  FROM dbo.test32 t2             
                  WHERE t2.ColumnB = t1.ColumnB
                  GROUP BY t2.ColumnB
                  HAVING COUNT(*) > 1 AND MAX(t2.ColumnC) = t1.ColumnC
                  )

SQLFiddleのデモ

于 2013-02-06T07:48:30.360 に答える