我两次搜索互联网和整个Stackoverlow,但没有找到可行的解决方案。
假设我有一个包含以下列的表: A,B,C,d,E,F,G,H,I
a是1-16的整数 根据这个值,我必须选择是否选择b-i。
实施例: 如果a = 1我需要b,c,d,e,i。如果a = 2我需要e,g,h,i
所以我可以使用:
SELECT
CASE a WHEN 1 THEN b WHEN 2 THEN NULL ELSE NULL END as a
....
CASE a WHEN 1 THEN NULL WHEN 2 THEN g ELSE NULL END as g
是否有更简单的方式:
CASE a When 1 (select b,c,d,e,i)?
奖金愿望:我可以根据a的值选择吗?实施例
if a = 1 column b should be named "lol", if a = 2 b should be called "rofl".
答案 0 :(得分:0)
我能想到的最接近的是你想要的列:
SELECT CASE a
WHEN 1 THEN CONCAT_WS(', ', b, c, d, e, i)
WHEN 2 THEN CONCAT_WS(', ', e, g, h, i)
END AS result
另一种解决方案是使用UNION
SELECT a, b, c, d, e, i
FROM yourTable
WHERE a = 1
UNION
SELECT a, e, g, h, i, null
FROM yourTable
WHERE a = 2
请注意,根据a
的值,您不能拥有不同的列别名。整个查询只有一组列名。在UNION
中,它们来自第一个子查询中的列名或别名。