0

我刚遇到一个需要在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]

那么有什么可能的解决方法呢..?我能想到的一个方法是创建一个视图,如果出现任何此类用例,我总是会这样做。

但是对于这个数据库,我只有读取权限。所以我不能为此目的在这个数据库上创建视图。SELECT所以我只需要通过声明来完成它。

4

3 回答 3

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
于 2013-10-30T05:25:08.437 回答
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
于 2013-10-30T06:16:38.860 回答
0

@Bohemian 和 @upendra 的解决方案回答了您的问题。我的回答是关于视图的使用。正如您所说,您不能再使用视图,因为您具有读取权限,但您可以使用公用表表达式。

于 2013-10-30T08:17:46.753 回答