我用SQL编写了以下查询,以根据天和小时获取结果。天,开始和结束时间存储在表'tblHeader'中,天存储在7列(星期一,星期二,Wendesday等)中,而start_time和end_time则存储在同一表的另外2列中。表格结构会像
日期和小时数是动态的。因此,当我运行以下查询时,我会得到整天的结果,但是我只需要'Y'的那一天。
例如:如果我在星期一运行查询,则仅需要基于动态时间条件获取星期一数据。
我的查询是
select
-----
------
(CASE
WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Monday' THEN PriceH_strMonday WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Tuesday' THEN PriceH_strTuesday WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Wednesday' THEN PriceH_strWednesday WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Thursday' THEN PriceH_strThursday WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Friday' THEN PriceH_strFriday WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Saturday' THEN PriceH_strSaturday WHEN
(SELECT DATENAME(dw, getdate())) LIKE 'Sunday' THEN PriceH_strSunday END) as today
from tblPrice a
inner join
where
Today = 'Y'
and c.StartTime >= @mystarttime or c.EndTime <= @mystarttime
现在,Case语句的结果显示为名为“今天”的列,当我将该列包含在where条件中时,我遇到了一个错误,指出无效的列名“今天”。我该怎么解决?
有帮助吗? 谢谢。