2012-07-24 56 views
1

表名:SimpleTable
SQL - 有條件的虛擬列根據離值設置

| A | B | C | D | E | F | 
+----------------------+ 
| 5 | 3 | 5 | 9 | 6 | 3 | 
| 7 | 5 | 0 | 0 | 9 | 2 | 
| 1 | 6 | 1 | 2 | 4 | 5 | 
| 2 | 9 | 4 | 4 | 9 | 0 | 
| 9 | 2 | 3 | 5 | 2 | 8 | 

我有一個簡單的表看起來像這樣,我基本上是想做的事就是做這個簡單的表中的選擇但在結果中有一個額外的虛擬列(簡稱爲「虛擬」)。此虛擬列使用來自其他列的值構建,如果整數爲7或以上,則它包含列的標題。例如,第一行的虛擬將顯示「D」,但第二行將顯示「A/E」。我一直無法弄清楚SQL如何實現這個邏輯,但非常感謝任何幫助。

+0

你使用什麼數據庫? – 2012-07-24 07:27:23

回答

0
SELECT A, B, C, D, E, F, 
CASE 
WHEN A >= 7 THEN 'A/' 
ELSE '' END 
+ 
CASE 
WHEN B >= 7 THEN 'B/' 
ELSE '' END 
+ 
CASE 
WHEN C >= 7 THEN 'C/' 
ELSE '' END 
+ 
CASE 
WHEN D >= 7 THEN 'D/' 
ELSE '' END 
+ 
CASE 
WHEN E >= 7 THEN 'E/' 
ELSE '' END 
+ 
CASE 
WHEN F >= 7 THEN 'F' 
ELSE '' END 

AS Dummy 
FROM SimpleTable 
3

如果這是SQL服務器,然後

select *, 
     stuff (case when a >= 7 then '/A' else '' end 
      + case when b >= 7 then '/B' else '' end 
      + case when c >= 7 then '/C' else '' end 
      + case when d >= 7 then '/D' else '' end 
      + case when e >= 7 then '/E' else '' end 
      + case when f >= 7 then '/F' else '' end, 
     1, 1, '') dummy 
    from SimpleTable 

在這不是一列是大於或等於7虛設將是無效的情況下。