2017-04-06 68 views
0

這不是我第一次遇到這種類型的問題,我還沒弄明白。將來自多行的數據合併爲一行,多列

我試圖拉一個僱員的記錄,並找到他們是哪個種族。數據目前正在返回的方式是:

Emp # | Race 
------------- 
1111 | White 
1111 | Asian 

我想它看起來像這到底:

Emp # | White | Black | Hispanic | Asian | Indian | Other 
--------------------------------------------------------- 
1111 | Y | N | N  | Y | N | N 

我已經通過CTE的和旋轉功能嘗試,但我可能對如何使用PIVOT沒有太大的瞭解。

+0

聖bejesus那是太愚蠢簡單。我搜索了很長一段時間,甚至讀了所有可能的重複,所以建議,仍然沒有找到一個。謝謝! –

回答

0

建立動態SQL這樣的

select Emp, 
    case when MAX(case when Race = 'White' then 1 else 0 end) = 1 then 'Y' else 'N' as White, 
    case when MAX(case when Race = 'Asian' then 1 else 0 end) = 1 then 'Y' else 'N' as Asian, 
    case when MAX(case when Race = 'Black ' then 1 else 0 end) = 1 then 'Y' else 'N' as Black 
from [YourTable] 
group by Emp 
+1

爲什麼雙重情況?我會去MAX(當Race ='White',然後'Y'else'N'結束時) –

+0

Giorgos Betsos - 我知道這是靜態的。我的意思是說,作者應該建立動態查詢來產生這樣的查詢。他可以在純sql或其客戶端應用程序中生成它。 – ventik

+0

John Cappelletti - 在這種情況下,它會起作用,但如果您決定使用不同的值而不是Y和N,則可能會出現一些問題。 – ventik