私は単純なクエリで作業していますが、以下の出力を生成するために変更する方法を理解することはできません。カラムによるクエリの条件付き結果
Number Name Flag
1 ABC NULL
1 DEF FG
1 DEF NULL
私はこの出力を生成する必要があります。
Number Name Flag
1 ABC NULL
1 DEF FG
ロジックは、番号と名前が同じである場合、旗を持つ行を取るです。
私は単純なクエリで作業していますが、以下の出力を生成するために変更する方法を理解することはできません。カラムによるクエリの条件付き結果
Number Name Flag
1 ABC NULL
1 DEF FG
1 DEF NULL
私はこの出力を生成する必要があります。
Number Name Flag
1 ABC NULL
1 DEF FG
ロジックは、番号と名前が同じである場合、旗を持つ行を取るです。
たぶん、このような何か:
まずいくつかのテストデータ:
DECLARE @tbl TABLE(Number INT,Name VARCHAR(10),Flag VARCHAR(3))
INSERT INTO @tbl
VALUES
(1,'ABC',NULL),
(1,'DEF','FG'),
(1,'DEF',NULL)
このようなクエリ:
;WITH CTE AS
(
SELECT
RANK() OVER(PARTITION BY Name ORDER BY Flag DESC) AS iRank,
tbl.Number,
tbl.Name,
tbl.Flag
FROM
@tbl AS tbl
)
SELECT
*
FROM
CTE
WHERE
CTE.iRank=1
完璧!それはシナリオのために最高の仕事、私が探していた..ありがとう!!!! – user1141584
喜んで助けてください..ハッピーコーディング:P – Arion
単純な方法ですが、NULL以外の値が複数ある場合は、それが要件を満たしているかどうかわかりません。
SELECT Number, Name, Flag = MAX(Flag)
FROM dbo.Table
GROUP BY Number, Name;
あなたが '1を含む別の行を持っている場合はどうなりますかDEF GH'? –