2011-07-11 10 views
0

テーブルからデータを抽出し、単一の列の結果に基づいて複数の列を表示しようとしています。単一の列select文から複数の列を表示

たとえば、myテーブルにはrecordId、valueId、およびvalueがあります。また、私はvalueIdに基づいて複数の列を作るしようとしているこの

recordId | valueId | value 
1   | 5  | 2011-03-24 
2   | 5  | 2011-03-25 
3   | 3  | Bobcat 
4   | 3  | Backloader 
5   | 4  | Mono 
6   | 4  | Stereo 

のようなものを見ることができます(valueId 4スピーカータイプである一方、例えばvalueId 5参加日で、valueId 3は、車両タイプである)が、私はしようとするたびに独自の列を作成するには、両方の列の戻り値で同じデータを取得することになります。

私が(例えば、第1行は下の2011年3月24日を持っています。これは、適切なヘッダを作成しますが、私は、各値コールの各列に同じデータを取得します

select recordId as Records, valueId as [Join Date], valueId as [Vehicle type], valueId as [Speaker Type], value as [Data Entered] where valueId = 5 OR valueId = 3 OR valueId = 4

のようなものを使用します参加日、車種、スピーカータイプ、行2は2011-03-25、行3はBobcat)

ありがとうございました!

編集:誰もが助けてくれてありがとう!おそらくこのような何かを私ができる場合、私はupvoteと思いますが、私はそれが私に語ってみたときに、私は(私は答えを編集し、承認するには、ログインしておりますので奇妙されている)にログインまたは登録する必要が

+0

この特定のデータサンプルに予想される出力を追加した場合は、素晴らしいことでしょう。 –

答えて

1

。すべての値をハードコードする必要があるという欠点がありますが。

select recordId as Records, 
    case when valueid=5 then value else null end [Join Date], 
    case when valueid=3 then value else null end [Vehicle type], 
    case when valueId=4 then value else null end [Speaker Type] 
from Table 
where valueId in (5,3,4) 

    RecordID | Join Date | Vehicle Type | Speaker Type 
    1   | 2011-03-24 | null   | null 
    2   | 2011-03-25 | null   | null 
    3   | null  | Bobcat   | null 
    4   | null  | Backloader  | null 
    etc.... 
0
select recordId as Records, 
     case 
     when valueId = 5 then value 
     else null 
     end as [Join Date], 

     case 
     when valueId = 3 then value 
     else null 
     end as [Vehicle type], 

     case 
     when valueId = 4 then value 
     else null 
     end as [Speaker Type] 

    from yourTable 
0

select recordId as Records, 
     case valueId when 5 then value end as [Join Date], 
     case valueId when 3 then value end as [Vehicle type], 
     case valueId when 4 then value end as [Speaker Type], 
     value as [Data Entered] 
from YourTable  
where valueId = 5 OR valueId = 3 OR valueId = 4 

結果:あなたは以下の技術を使用してデータを回転/旋回することができる動的SQLを使用せずに

Records  Join Date Vehicle type Speaker Type Data Entered 
----------- ---------- ------------ ------------ ------------ 
1   2011-03-24 NULL   NULL   2011-03-24 
2   2011-03-25 NULL   NULL   2011-03-25 
3   NULL  Bobcat  NULL   Bobcat 
4   NULL  Backloader NULL   Backloader 
5   NULL  NULL   Mono   Mono 
6   NULL  NULL   Stereo  Stereo 
関連する問題