1

表名:简单表

| 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 中实现的,但非常感谢任何帮助。

4

2 回答 2

3

如果这是 Sql Server,那么

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,则 dummy 将为空。

于 2012-07-24T07:44:01.647 回答
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
于 2012-07-24T07:40:26.093 回答