1

以下に示すように、2 つの列を持つデータセットを返すクエリがあります。

--------------------------
|spec-number|project    |
|-----------|-----------|
|649841     |A          |
|649841     |B          |
|649841     |D          |
|84709      |E          |
|84709      |B          |
|84709      |C          |
|84709      |K          |
-------------------------

スペック番号が関与できるプロジェクトの数は潜在的に無限になる可能性があります。

私が望む結果は次のとおりです。

-------------------------------------------------
|spec-number|project1|project2|project3|project4|
|-----------|--------|--------|--------|--------|  
|649841     |A       |B       |D       |        | 
|84709      |E       |B       |C       |K       |
-------------------------------------------------

ピボットしてみましたが、仕様番号ごとにプロジェクトのクロスタブが表示されます。どんな助けでも大歓迎です!

4

1 に答える 1

0

それらを別々の列にしたい場合は、プロジェクト番号を計算し、それをピボットに使用できます。以下は、group by集計方法を使用します。

select spec_num,
       max(case when seqnum = 1 then project end) as project1,
       max(case when seqnum = 2 then project end) as project2,
       max(case when seqnum = 3 then project end) as project3,
       max(case when seqnum = 4 then project end) as project4
from (select t.*,
             row_number() over (partition by spec_number order by project) as seqnum
      from t
     ) t
group by spec_num;

可変数の列が必要な場合は、動的 SQL を使用する必要があります。pivot必要に応じて、これをクエリとして表現することもできます。

于 2013-09-11T01:51:24.000 に答える