[英]How to split a single column into multiple columns in SQL Server select statement?
[英]Select multiple columns with single case statement in SQL Server
我要求三列的值取决于单列的值。 说我有一张桌子
A | B | C | D | E
A、B、C、D 和 E 是列,如果 D 列的值为“1”,则要求获取 A、B 和 C 的值,否则 A、B 和 C 的值将为 NULL。
我尝试使用 CASE 语句,但似乎我们必须多次使用 CASE
SELECT
CASE
WHEN D = '1'
THEN A
ELSE NULL,
CASE
WHEN D = '1'
THEN B
ELSE NULL;
我一直在寻找类似于一个 CASE 的东西并选择适当的值。 有什么方法可以实现,或者这是推荐的方法。
三个case
表达式是最自然的方法。 但是,您也可以使用outer apply
:
SELECT x.*
FROM t OUTER APPLY
(SELECT t.a, t.b, t.c
WHERE d = '1'
) x;
如果您的表具有唯一标识符,例如ID
,您还可以将表连接到自身。 假设您的表名是test
:
SELECT test2.A, test2.B, test2.C, test.D, test.E
FROM test
LEFT JOIN test test2 ON
test.ID = test2.ID AND
test.D = '1';
如果在列ID
加D
上设置 UNIQUE 复合索引,它可以是一个有效的查询。 在上面的查询中,无论D
的值如何,您都需要test.D
和test.E
来保留这些列中的原始值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.