2011-07-11 48 views
0

我試圖從表中提取數據並根據單列結果顯示多列。從單列選擇語句顯示多列

例如,我的表有一個recordId,一個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多列(如VALUEID 5是註冊日期,VALUEID 3是車輛類型,而VALUEID 4揚聲器類型),但每當我嘗試爲了創建自己的列,我最終在列返回中獲得了相同的數據。

例如 我會使用類似

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

這將創建一個適當的標題,但我會在每個值調用每列相同的數據(例如,第一行會有2011-03-24下加入日期,車輛類型和揚聲器類型,第2排將2011-03-25,而第3排將是山貓)

感謝您提供任何幫助!

編輯:感謝大家提供的幫助!我會給予好評,如果我可以,但每當我嘗試它告訴我,我必須登錄或註冊(因爲我登錄到編輯和審批答案這是奇怪的...)

+0

如果您爲此特定數據樣本添加了預期輸出結果,那將會很棒。 –

回答

1

不使用動態SQL可以PIVOT /旋轉使用以下技術中的數據。雖然它有缺點,你必須硬編碼所有的值。

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 

結果:

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