gpt4 book ai didi

sql - 使用 CTE 简化 SQL 语句

转载 作者:行者123 更新时间:2023-12-04 14:49:28 26 4
gpt4 key购买 nike

我有如下查询:

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 和 group 中使用表达式查询此类表 CalculatedValue
不幸的是,这不起作用,因为选择需要已经包含 group by创建 CTE

有没有其他方法可以避免重复 CASE WHEN...很多次?

最佳答案

使用 CROSS APPLY ,可用于定义别名字段,然后引用它们:

SELECT A.a, 
A.b,
B.c,
CalculatedValue,
B.d
FROM
dbo.TableA A
INNER JOIN
dbo.TableB B
ON (...)
CROSS APPLY
(SELECT (CASE WHEN ... THEN ... ELSE ... END)) CxA(CalculatedValue)
WHERE CalculatedValue BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, CalculatedValue, B.c
CxA只是一个别名,您可以随意命名。

关于sql - 使用 CTE 简化 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com