2014-01-20 56 views
1

我有一個類似於下面的表。它的一個項目表和他們相關的倉位。有些可能有多個分倉位置,並且他們都會有首選倉位或主分倉位置。我如何運行查詢來將行轉置爲列並確定首選哪個首選的bin?sql pivot數據行到列

Item Bin Preferred 
A  2  Yes 
A  3  No 
A  1  No 
B  3  Yes 
B  4  No 

輸出應該是這樣的:

Item BinPreferred Bin2 Bin3 
A  2    3 1 
B  3    4 - 

我已經使用了旋轉功能,沒有運氣嘗試。

謝謝,

+0

既然你有tsql作爲標記,這是SQL Server嗎?如果是這樣,什麼版本? – Dan

+0

「Bin3」的邏輯是什麼? –

+1

對於物品可以在的箱數有固定的限制嗎?或者它是動態的? –

回答

0

這應該是解決方案的情況下,一個項目有最大數量的3箱。 如果我是正確的,它會選擇主箱和另外兩個不相等的箱子。

Select distinct 
mainbin.item, 
mainbin.bin as binpreffered, 
bin2.bin as bin2, 
bin3.bin as bin3 
from table mainbin 
left join table bin2 on (mainbin.id=bin2.id) 
left join table bin3 on (mainbin.id=bin3.id) 
where mainbin.preffered='Yes' 
and bin2.preffered='No' 
and bin3.preffered='No' 
and bin2.id<>bin3.id;