2016-01-30 157 views
1

柱狀數據我有一個結構表如下圖所示查詢在SQL Server

CustimerId Name Store Bill Item1 Item2 Item3 

1   A StoreA 100   Y 
2   A StoreB 200 N    Y 
3   B StoreA 300 N 
4   C StoreC 400 Y  N  Y 

現在我想根據自己在列中的值項目1,項目2,項目3是如下一列。

CustimerId Name Store Bill BoughtAnySpecialItem 

1   A StoreA 100 Y 
2   A StoreB 200 Y 
3   B StoreA 300 N 
4   C StoreC 400 Y 

這意味着如果通過Item1到Item3的列中的任何值是'Y'我想使它'Y',否則'N'。項目列是更多和/或不同的名稱(不像Item-X)。

我需要查詢來做到這一點。任何人都可以建議在SQL Server中執行此操作的最佳方法嗎?或者至少將我指向正確的資源。提前致謝。

回答

2

您可以使用case語句來做到這一點,是這樣的:

case when Item1 = 'Y' or Item2 = 'Y' or Item3 = 'Y' then 'Y' else 'N' end 
+0

但我的專欄更多。有200列這樣的。有沒有任何迭代方法? – aditya

+0

不是,您可以構建與動態SQL相同的內容,但仍需要列出要檢查的列。 –

1

既然你有多個列的檢查,你可以扭轉IN操作

SELECT *, 
     CASE WHEN 'Y' in (Item1 , Item2 , Item3) THEN 'Y' ELSE 'N' END as BoughtAnySpecialItem 
FROM Yourtable 

現在你可以很容易地列出列在IN opertaor