1

次のようなテーブルがあります。

Name     Value
---------------
toyota   yellow
nissan   blue
toyota   red
nissan   black

テーブルをこれに変換したい:

toyota    nissan
----------------
yellow    blue
red       black

これどうやってするの?

このコマンドを使用してみました:

SELECT * (CASE Name WHEN 'toyota' THEN Value END) toyota,
         (CASE Name WHEN 'nissan' THEN Value END) nissan
FROM testTable

しかし、それは次のような表になります。

toyota     nissan
----------------------
yellow     NULL
NULL       blue
red        NULL
NULL       black

ヘルプ?ありがとう

4

3 に答える 3

2

使用pivotも可能です:

declare @table table (Name varchar(50), Value varchar(50))
insert into @table values ('toyota', 'yellow'), ('nissan', 'blue'),
    ('toyota', 'red'), ('nissan', 'black')

;with t as (
    select *, rn = row_number() over (partition by Name order by Value)
    from @table
)
select Toyota, Nissan
from t
    pivot (max(Value) for Name in ([Toyota],[Nissan])) p
于 2013-08-16T15:43:09.503 に答える
2

完全外部結合の使用

select toyota, nissan from 
(select value toyota, ROW_NUMBER() over (order by value desc) r 
      from testtable 
      where name = 'toyota') t
    full outer join
(select value nissan, ROW_NUMBER() over (order by value desc) r 
      from testtable 
      where name = 'nissan') n
    on t.r =n.r
于 2013-08-16T15:40:08.760 に答える
2

質問をさせてください。うまくいけば、期待どおりに動作しない理由が示されることを願っています。

あなたがしたい

toyota    nissan
----------------
yellow    blue
red       black

しかし、同様にあなたが持つことができます

toyota    nissan
----------------
yellow    black
red       blue

データベースは、黄色と青が同じ行にあることをどのように判断しますか? 元のテーブルには、2 つの行を結合するものは何もありません。

データベースは、黄色を黒と青のどちらに関連付けるかを認識していないため、どちらにも関連付けません。

于 2013-08-16T15:35:36.320 に答える