这里允许SQL新手,但我正在进行一个查询,其中请求变得更加复杂。很长一段时间,我有一个有几列的表。其中一个是日期栏。
我正在编写一个查询来返回一组列,同时根据日期范围添加一个新列(< = 90 Days,91-180,180 +)。这就是我到目前为止所拥有的。它适用于前90个,但我有一个很难的时间嵌套其他选择命令来获取其他数据集。
Select Key, Name, 'C90' as Code
From LD_List
WHERE DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) <= 90
我很感激帮助。
答案 0 :(得分:1)
SELECT Key, Name,
CASE WHEN DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) <= 90 THEN 'C90'
WHEN DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) >= 91 AND DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) <= 180 THEN 'C180'
WHEN DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) >= 181 THEN 'C181'
END AS Code
答案 1 :(得分:1)
如果您使用的是TSQL,SQL Server或MYSQL,CASE WHEN
:Key是 resreved关键字。所以使用squre括号。在我的示例中,我使用了key作为id。
查询:SQL Server版本:
Select id, Name,
case when DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) <= 90
Then 'C90'
when (DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) >= 91
and DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) <= 180)
then 'C180'
else 'C181'
end AS Code
From LD_List
结果:
ID NAME CODE
1 john C181
2 tim C181
3 jack C181
4 kate C181
5 jim C181
6 ron C180
7 henry C180
8 liza C90
现在,如果您需要如下所示的支点:请检查此* SQLFIDDLE Demonstration out
结果:
CODE PURCHASERS
C180 ron,henry
C181 john,tim,jack,kate,jim
C90 liza