【问题标题】:Add New Column in Nested SELECT with DATEDIFF使用 DATEDIFF 在嵌套 SELECT 中添加新列
【发布时间】:2012-12-20 20:04:06
【问题描述】:

在这里录取了 SQL 新手,但我正在处理一个请求变得更加复杂的查询。很短的一点是我有一张有几列的桌子。其中之一是日期列。

我正在编写一个查询以返回一组列,并根据日期范围(

Select Key, Name, 'C90' as Code
From LD_List
WHERE DATEDIFF(DAY,[LAST_PURCHASE_DATE],GETDATE()) <= 90

感谢您的帮助。

【问题讨论】:

  • 您使用的是什么 SQL? SQL服务器? MYSQL?

标签: sql select datediff


【解决方案1】:

如果您使用的是 TSQL、SQL Server 或 MYSQL,您可以使用,CASE WHEN:Key 是 resreved 关键字。所以使用方括号。在我的示例中,我使用了 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

【讨论】:

  • 这成功了!我更改了一些列名称以进一步掩盖项目,但我感谢您的帮助!再次感谢!
  • @user1919851 很高兴你成功了。然后投票,以便系统更新您的查询已解决。如果您想对结果进行切片以显示像 MYSQL group_concat 这样的枢轴,您可以尝试使用 XML PATHStuff 函数.. :) 如果您有疑问,请告诉我们。
  • 我需要 15 个代表来投票。奇怪的是,我什至不能为自己的问题投票。
  • @user1919851 但您可以点击会变成绿色的白色勾号。这可以在没有任何额外代表的情况下完成。如果您最初想获得代表,您可以 1. 发布好的问题 2. 发布好的答案。 3.编辑其他人的问题(任何拼写错误、代码 sn-p 格式、html 格式、正确重新标记、标题修改) 4.编辑维基标签
【解决方案2】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2013-07-24
    • 2017-02-25
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多