1

転置したい SQL Server テーブルがあります。つまり、行と列を入れ替えます。

元のテーブルは次のようになります。

empname     empqual     emprank    empexp
Lily        MASTERS        1         9       
Sasha       UNIVERSITY     1         9
Harry       UNIVERSITY     1         9
Angela      MASTERS        4        10
Joyce       UNIVERSITY     5        11

行データは動的であり、上の表はテーブル スキーマを示すためのものであることに注意してください。

編集:上記の表を次のように変更したいと思います。

DETAILS    Column1     Column2     Column3    Column4     Column5
empname     Lily       Sasha        Harry      Angela      Joyce
empqual    MASTERS    UNIVERSITY  UNIVERSITY  MASTERS    UNIVERSITY
emprank       1           1          1          4           5
empexp        9           9          9          10          11

私はいくつかのオンラインの例を見てきました。このPIVOT関数は、テーブルを転置するときに最も一般的に使用される関数のようですが、他のほとんどの例とは異なり、必要な操作には集計が含まれていないため、これを行う方法がわかりません。この質問が冗長であり、可能な回答が他の場所に既に存在する場合はお詫びします。

4

2 に答える 2

0

このクエリは、サンプル データに対して機能します。

declare @t table(
    empname varchar(20) not null,
    empqual varchar(20) not null,
    emprank int not null,
    empexp int not null
)
insert into @t(empname,empqual,emprank,empexp) values
('Lily','MASTERS',1,9),    
('Sasha','UNIVERSITY',1,9),
('Harry','UNIVERSITY',1,9),
('Angela','MASTERS',4,10),
('Joyce','UNIVERSITY',5,11)

select *
from (select empname,empqual,CONVERT(varchar(20),emprank) as emprank,CONVERT(varchar(20),empexp) as empexp from @t) t
unpivot (value FOR measure in (empqual,emprank,empexp)) as unpvt
pivot (MAX(value) for empname in (Lily,Sasha,Harry,Angela,Joyce)) pvt
order by
    CASE measure WHEN 'empqual' THEN 0
                WHEN 'emprank' THEN 1
                WHEN 'empexp' THEN 2
                END

結果:

measure      Lily                 Sasha                Harry                Angela               Joyce
------------ -------------------- -------------------- -------------------- -------------------- --------------------
empqual      MASTERS              UNIVERSITY           UNIVERSITY           MASTERS              UNIVERSITY
emprank      1                    1                    1                    4                    5
empexp       9                    9                    9                    10                   11

「行データは動的です」というコメントが名前のリストが不明であることを意味する場合は、最初に名前のリストを取得するクエリを作成し、次にその名前のリストを使用して上記のクエリを作成する必要がありますPIVOTセクション。

「ダイナミック ピボット」を検索すると、その例がたくさん見つかります。

于 2013-07-24T12:55:49.463 に答える