0

このトピックは初めてで、助けが必要です... 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" は、このセルが空であることを意味します。助けてくれてありがとう。

4

1 に答える 1

2

考えられる方法の 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 ... ENDcol2

于 2013-02-09T10:00:36.517 に答える