在SQL Server中执行嵌套case句子逻辑的最佳方法
技术问答
212 人阅读
|
0 人回复
|
2023-09-14
|
我正在写一个SQL查询需要根据相当多的条件计算一些返回列。
: W; S" |( N/ I# l4 U1 M4 E2 E我目前正在使用嵌套case语句,但是它变得凌乱。有没有更好(更有条理和/或更易读)的方法?
2 W) H- W3 E" } K(我用的是Microsoft SQL Server,2005)- k, I6 e+ ]+ X) D* z
一个简化的例子:6 ~: q& o6 ]: q: _
SELECT col1, col2, col3, CASE WHEN condition THEN CASE WHEN condition THEN CASE WHEN condition 2 THEN calculation ELSE calculation2 END ELSE CASE WHEN condition 2 THEN calculation3 3 ELSE calculation END END ELSE CASE WHEN condition THEN CASE WHEN condition 2 THEN calculation 55 ELSE calculation6 END ELSE CASE WHEN condition 2 THEN calculation ELSE calculation 8 END END END AS 'calculatedcol1', col4, col5 -- etcFROM table
+ W1 v% V8 m8 J" f8 z P 解决方案:
9 _# D ]$ g7 n: O) X/ U9 u 你可以试试某个COALESCE例如:
9 P2 }' x+ \6 R% U- b; S. X; XSELECT COALESCE( CASE WHEN condition1 THEN calculation1 ELSE NULL END, CASE WHEN condition2 THEN calculation2 ELSE NULL END, etc...) |
|
|
|
|
|