如何在case条件中使用case语句结果

时间:2020-10-23 05:45:44

标签: sql sql-server sql-server-2014

我用SQL编写了以下查询,以根据天和小时获取结果。天,开始和结束时间存储在表'tblHeader'中,天存储在7列(星期一,星期二,Wendesday等)中,而start_time和end_time则存储在同一表的另外2列中。表格结构会像

Days and Time

日期和小时数是动态的。因此,当我运行以下查询时,我会得到整天的结果,但是我只需要'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条件中时,我遇到了一个错误,指出无效的列名“今天”。我该怎么解决?

有帮助吗? 谢谢。

0 个答案:

没有答案
相关问题