我刚才有一个案例需要在另一列查询的WHERE
中使用计算列
我需要做这样的事情:
SELECT CONVERT(Date, RequestedOn) AS [Date],
COUNT(*),
(SELECT COUNT(*) FROM CalculatorLog WHERE CONVERT(Date, RequestedOn) = [Date] AND <other_static_conditions>) AS [Count]
FROM CalculatorLog
Group by CONVERT(Date, RequestedOn) Order by [Date] DESC
我正在尝试在SELECT
语句的第二列中实现此功能。但它的错误是Invalid Column name [Date]
。
那么有什么可行的解决方法呢? 我能想到的是创建一个视图,如果有任何这样的用例到达,我总是会这样做。
但对于这个数据库,我只有读访问权限。所以我不能为此目的在这个数据库上创建View。所以我只需要通过SELECT
语句完成它。
答案 0 :(得分:1)
用子查询中的CONVERT(Date,CL.RequestedOn)替换[Date]列,如
SELECT CONVERT(Date, CL.RequestedOn) AS [Date],
(SELECT COUNT(*) FROM CalculatorLog WHERE CONVERT(Date, RequestedOn) = CONVERT(Date, CL.RequestedOn) AND <other_static_conditions>) AS [Count]
FROM CalculatorLog CL
Group by CONVERT(Date, CL.RequestedOn) Order by [Date] DESC
答案 1 :(得分:1)
只为条件加1,否则加0:
SELECT
CONVERT(Date, RequestedOn) AS [Date],
COUNT(*),
SUM(CASE WHEN <other_static_conditions> THEN 1 ELSE 0 END) AS [Count]
FROM CalculatorLog
Group by CONVERT(Date, RequestedOn)
Order by [Date] DESC
答案 2 :(得分:0)
来自@Bohemian和@upendra的解决方案可以回答您的问题。我的回复是关于意见的用法。正如您所说,您不能再使用视图,因为您具有读访问权限,但您可以使用公用表表达式。