このトピックは初めてで、助けが必要です... SQL で 1 つのフィールドのみのクエリで重複を非表示にする方法は? たとえば、私はテーブルを持っています
- 1、122、123、6
- 2、122、156、7
- 3、122、188、6
- 4、101、186、8
テーブルを取得したい
- 122、123、6
- 空、156、7
- 空、188、6
- 101、186、8
"Emty" は、このセルが空であることを意味します。助けてくれてありがとう。
このトピックは初めてで、助けが必要です... SQL で 1 つのフィールドのみのクエリで重複を非表示にする方法は? たとえば、私はテーブルを持っています
テーブルを取得したい
"Emty" は、このセルが空であることを意味します。助けてくれてありがとう。
考えられる方法の 1 つを次に示します。
DECLARE @t TABLE (col1 INT, col2 INT, col3 INT, col4 INT)
INSERT @t VALUES
(1, 122, 123, 69),
(2, 122, 156, 7),
(3, 122, 188, 6),
(4, 101, 186, 8)
SELECT CASE WHEN ROW_NUMBER() OVER (PARTITION BY col2 ORDER BY col1) = 1 THEN col2 END col2_New
, col3
, col4
FROM @t
ORDER BY
col1
最初に出現した a のみがcol2
結果セットに書き込まれる値を取得します (値はcol1
昇順で並べられます)。それ以外の場合、値は NULL になります (データベース用語では値が定義されていないことを意味します)。TSQLROW_NUMBER
関数を使用します。詳細については、こちらを参照してください。関数の呼び出しは、特定の値が最初に出現した場合にのみ値を書き出すことを可能にする条件式でROW_NUMBER
囲まれています。CASE ... WHEN ... THEN ... END
col2