sql >> データベース >  >> RDS >> Sqlserver

一部の共有列に基づいて識別子/カウンターを作成し、他の列に基づいて分離する

    ウィンドウ関数 DENSE_RANK() OVER() で 節:

    DECLARE @tbl TABLE(Column1 INT,Column2 INT,Column3 VARCHAR(100));
    INSERT INTO @tbl VALUES(1,1,'A')
                          ,(1,2,'A') 
                          ,(1,3,'B') 
                          ,(2,1,'A') 
                          ,(2,2,'A') 
                          ,(2,3,'B') 
                          ,(3,1,'A') 
                          ,(3,2,'B') 
                          ,(3,3,'V');
    
    SELECT *
          ,DENSE_RANK() OVER(PARTITION BY Column1 ORDER BY Column3) AS ComputedColumn
    FROM @tbl;
    

    PARTITION BY column1 の新しい値ごとにカウンターを再起動します 、 ORDER BY ランキングを定義します。

    ヒント:画像を貼り付けないでください!

    次の質問については、私の例に従って、問題を再現するスタンドアロンの例を作成し、自分で試したコードを追加してください。




    1. dtexecを使用したSSISパッケージの実行

    2. テーブルの主キーを取得する方法は?

    3. 1つのクエリを使用して2つのテーブルからデータを選択する方法

    4. MySQL:すべての属性がリストされている製品を入手する