我正构建一个大表,我需要在同一个select中使用CASE
个几个位置。当我需要在同一个选择中的CASE
中使用已选择的列时,会出现问题。例如:
SELECT CASE WHEN (B.field_B1 + C.field_C1) > x THEN x ELSE 0 END AS field_1,
CASE WHEN field_1 > y THEN 'larger' ELSE 'smaller' END AS field 2,
CASE WHEN field_1 > z THEN 'taller' ELSE 'shorter' END AS field 3
FROM table_A AS A
INNER JOIN table_B as B on A.key_1 = B.KEY_1
LEFT OUTER JOIN table_C as C on A.key_1 = C.KEY_1
感兴趣的表包含几百列和几百万行,因此性能是一个关键问题。在这种情况下不支持CROSS APPLY
,我希望在WITH
之前避免使用SELECT
,因为这只是大脚本的一小部分。有创意吗?