【发布时间】:2012-03-01 04:02:04
【问题描述】:
我有如下查询:
SELECT A.a, A.b, B.c,
(CASE WHEN ... THEN ... ELSE ... END) AS CalculatedValue,
B.d
FROM dbo.TableA A INNER JOIN
dbo.TableB B ON (...)
WHERE (CASE WHEN ... THEN ... ELSE ... END) BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, (CASE WHEN ... THEN ... ELSE ... END), B.c
为避免多次重复完全相同的表达式:(CASE WHEN ... THEN ... ELSE ... END) 我想定义一个 CTE 并在 select、where 中使用表达式查询此类表CalculatedValue
不幸的是,这不起作用,因为在创建 CTE 时选择需要已经包含 group by
有没有其他方法可以避免重复CASE WHEN... 这么多次?
【问题讨论】:
标签: sql sql-server-2008 common-table-expression cross-apply