在创建的变量上使用Where语句

时间:2019-01-30 19:05:00

标签: sql-server

我有以下代码从Checkin_day创建CHECKIN_DATE_TIME变量。我只想从新创建的Checkin_day变量中选择'Sundays',但是我收到了无效的列名错误(因为它不是数据集中的变量)。我可以在代码中添加些什么,以便仅选择落在“星期日”的记录?这是一个声明问题,还是我需要子查询?

use EMTCQIData

DECLARE @StartDate Date
DECLARE @EndDate Date

Set @StartDate = '01/01/2018'
Set @EndDate = '12/31/2018'

SELECT *, 
Format([CHECKIN_DATE_TIME],'dddd') AS [Checkin_Day]
FROM ED_TAT_MASTER
WHERE (CHECKIN_DATE_TIME > @StartDate and CHECKIN_DATE_TIME < @EndDate) AND 
Checkin_Day = '*Sunday*'

2 个答案:

答案 0 :(得分:2)

尝试查询实际列,而不是别名。

DECLARE @StartDate Date
DECLARE @EndDate Date

Set @StartDate = '01/01/2018'
Set @EndDate = '12/31/2018'

SELECT *, 
    FORMAT([CHECKIN_DATE_TIME], 'dddd') AS [Checkin_Day]
FROM 
    ED_TAT_MASTER
WHERE 
    (CHECKIN_DATE_TIME > @StartDate and CHECKIN_DATE_TIME < @EndDate) 
    AND FORMAT([CHECKIN_DATE_TIME], 'dddd') = 'Sunday' -- <- here

您还可以使用DATEPART(dw, [CHECKIN_DATE_TIME]) = 0之类的DATEPART进行查询 https://www.w3schools.com/sql/func_sqlserver_datepart.asp

答案 1 :(得分:0)

在您的WHERE子句中添加一个AND,以仅获取星期天的记录。