表名: SimpleTable
| 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 |
我有一个看起来像这样的简单表,我基本上想做的是在这个简单的表上做一个select但是在结果中有一个额外的虚拟列(为简单起见称为“Dummy”)。此虚拟列是使用其他列中的值构建的,如果整数为7或更大,则包含列的标题。例如,第一行的虚拟显示“D”,但第二行显示“A / E”。我无法弄清楚如何在SQL中实现这种逻辑,但非常感谢任何帮助。
答案 0 :(得分: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将为null。
答案 1 :(得分: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