依靠tsql中Case语句的结果
嗨,当我交换上面和下面的case语句行时,我得到了一个不同的值。这不好。有人能帮我吗依靠tsql中Case语句的结果,sql,sql-server,tsql,Sql,Sql Server,Tsql,嗨,当我交换上面和下面的case语句行时,我得到了一个不同的值。这不好。有人能帮我吗 SELECT CASE WHEN dDate > '20130509' ANd dDate < '20130909' THEN 1 WHEN dDate > '20130609' ANd dDate < '20131109' THEN 2 WHEN dDate > '20130709' ANd dDate < '20131009' TH
SELECT
CASE
WHEN dDate > '20130509' ANd dDate < '20130909' THEN 1
WHEN dDate > '20130609' ANd dDate < '20131109' THEN 2
WHEN dDate > '20130709' ANd dDate < '20131009' THEN 3 as DateVal,
CASE
WHEN dDate > '20130509' ANd dDate < '20130909' THEN COUNT(Encounter)
WHEN dDate > '20130609' ANd dDate < '20131109' THEN COUNT(Encounter)
WHEN dDate > '20130709' ANd dDate < '20131009' THEN COUNT(Encounter)) as Value
FROM Table 1
当用户稍微更改上面的查询时
SELECT
CASE
WHEN dDate > '20130609' ANd dDate < '20131109' THEN 2
**WHEN dDate > '20130509' ANd dDate < '20130909' THEN 1**
WHEN dDate > '20130709' ANd dDate < '20131009' THEN 3 as DateVal,
CASE
WHEN dDate > '20130609' ANd dDate < '20131109' THEN COUNT(Encounter)
**WHEN dDate > '20130509' ANd dDate < '20130909' THEN COUNT(Encounter)**
WHEN dDate > '20130709' ANd dDate < '20131009' THEN COUNT(Encounter)) as Value
FROM Table 1
这对我来说很奇怪。有人能帮忙吗。那是因为当子句重叠时,您在
中指定的日期间隔。当CASE
语句找到匹配的When
子句时,它从该子句中获取结果并跳过其他子句
您的某些记录可以在多个WHEN
子句中匹配。当您对子句重新排序时,您会更改行与另一个When
子句匹配的机会。这是因为您在When
子句中指定的日期间隔重叠。当CASE
语句找到匹配的When
子句时,它从该子句中获取结果并跳过其他子句
您的某些记录可以在多个WHEN
子句中匹配。重新排序子句时,当
子句时,更改行与另一个子句匹配的机会。这是因为日期范围重叠,而CASE
通常会选择第一个符合标准的正确表达式。您的日期格式是YYYYMDD还是yyyyddmm?这是因为您的日期范围重叠,而CASE
通常会选择第一个符合标准的正确表达式。您的日期格式是yyyymmdd还是yyyyddmm?
SELECT
CASE
WHEN dDate > '20130609' ANd dDate < '20131109' THEN 2
**WHEN dDate > '20130509' ANd dDate < '20130909' THEN 1**
WHEN dDate > '20130709' ANd dDate < '20131009' THEN 3 as DateVal,
CASE
WHEN dDate > '20130609' ANd dDate < '20131109' THEN COUNT(Encounter)
**WHEN dDate > '20130509' ANd dDate < '20130909' THEN COUNT(Encounter)**
WHEN dDate > '20130709' ANd dDate < '20131009' THEN COUNT(Encounter)) as Value
FROM Table 1
EncounterCount Date
45 1
150 2
20 3