首页 > 解决方案 > 在 WHERE 子句中使用 AS 查询问题

问题描述

我有一个复杂的查询,从几个字段中获取总和,除了一个子选择(有几个)之外,所有的似乎都工作正常。我有一个 WHERE 子句,它使用 table1.field = table2.field AND CONVERT(DATE, date/time field) BETWEEN 'firstDate' AND 'lastDate' AS total。如果没有“AS 总计”,它可以正常工作,但是当我使用“AS 总计”运行它时,我的结果不会进入“总计”。不知道为什么我以一种方式得到结果,而不是另一种。由于 AS 似乎没有得到返回的值,因此我在 VS 中收到了“total”的 DBNull 异常。

这是一个 SQL Sever 数据库。

SELECT 
    SUM(DATEDIFF(SECOND, a.intime, a.outtime)) 
FROM 
    table1 a, table2 a b
WHERE 
    a.empKey = b.employeeKey 
    AND CONVERT(DATE, outtime) BETWEEN '2018/07/12 4:00 AM' AND '2018/07/12 5:00 PM' AS total

标签: sqlsql-server

解决方案


我相信你想要:

SELECT SUM(DATEDIFF(SECOND, a.intime, a.outtime)) as total
FROM table1 a JOIN
     table2 b
     ON a.empKey = b.employeeKey 
WHERE CONVERT(DATE, outtime) BETWEEN '2018/07/12 4:00 AM' AND '2018/07/12 5:00 PM' ;

推荐阅读