以下SELECT中注释掉的部分有什么问题?
如果我取消注释整个CASE ... END,则SELECT变为无效
我想要的是,取决于是否有送货地址,取一组地址字段或另一组,理想情况下不重复条件或使用每个字段的COALESCE。我正在使用SQL Server 2008 R2
谢谢!
SELECT a, b, c,
-- CASE x is null
-- THEN d, e, f,
-- ELSE g, h, i,
-- END
k, l, m
FROM sometable
答案 0 :(得分:2)
考虑将x的条件放在where子句中,然后加入union
select a,b,c,d,e,f from table where x is null
union
select a,b,c,g,h,i from table where x is not null
案件需要一个时间。我总是使用这个结构
CASE ...
WHEN ...
THEN ...
ELSE ...
END AS Fieldname
所有5个必须存在。它可以用来定义一个ouputfield。在其中你当然可以使用煤炭,但它不会回馈一系列油田
编辑:ELSE实际上没有必要,请阅读下面的知情评论答案 1 :(得分:2)
此查询将为您提供正确的答案,并且也很容易修改
select
s.a, s.b, s.c,
a.f1, a.f2, a.f3,
s.k, s.l, s.m
from sometable as s
outer apply (
select s.d as f1, s.e as f2, s.f as f3 where s.x is null
union all
select s.g as f1, s.h as f2, s.i as f3 where s.x is not null
) as a
答案 2 :(得分:2)
您错过了WHEN
,并且只允许您从CASE
表达式返回单个值:
SELECT a, b, c,
CASE WHEN x is null
THEN d
ELSE g
END,
CASE WHEN x is null
THEN e
ELSE h
END,
CASE WHEN x is null
THEN f
ELSE i
END,
k, l, m
FROM sometable
这也假定d
和g
的类型兼容,(e
,h
)和(f
,{{1} })