TSQL - IF ...然后是日期和案例

时间:2013-01-21 12:18:46

标签: tsql date

大脑冻结......

我有4个状态日期,即在客户记录上更改状态时,我需要查询数据并查找客户在特定日期的状态。

e.g。数据

客户端设置日期实际截止日期截止日期

0001 01/01/12 10/01/12 23/02/12 15/11/12

0002 08/10/12 11/11/12

0003 11/12/12

因此,对于2012年12月31日的日期,那么0001表示关闭状态,0002将是Live,0003将是设置。

我想只返回该日期的客户和状态。

所以在2012年12月31日我会得到一个结果 0001关闭 0002直播 0003设置

我尝试使用一个案例,但它在某个地方出了问题,因为它似乎让我恢复了相同的状态,我可以看到为什么它不起作用但我的小noggin无法找到一种方法让它工作。这来自另一个提取并插入#Temp表的查询。

CASE 
WHEN #TempOutput.[System Setup] BETWEEN @Start and @End THEN 'Prospect' 
WHEN #TempOutput.[Prospect to Live] BETWEEN @Start and @End THEN 'Live'
WHEN #TempOutput.[Live to Terminal] BETWEEN @Start and @End THEN 'Terminal'
WHEN #TempOutput.Closing BETWEEN @Start and @End THEN 'Closed'
END 

这就像第一步,因为我需要循环显示这一步,以显示一段时间内每个客户端的状态。因此,如果是每周一段时间,则需要根据录入日期循环52次......我可以做到这一点! LOL

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

SELECT Client,
CASE 
   WHEN [Closed] <= @GivenDate THEN 'Closed'
   WHEN [Closing] <= @GivenDate THEN 'Closing'
   WHEN [Live to Terminal] <= @GivenDate THEN 'Terminal'
   WHEN [Prospect to Live] <= @GivenDate THEN 'Live'
   ELSE 'Prospect' 
END Status
FROM #TempOutput
WHERE [System Setup] <= @GivenDate