【问题标题】:Create Column based on multiple time conditions根据多个时间条件创建列
【发布时间】:2021-03-18 09:06:06
【问题描述】:

我有一个包含以下列的表(作为查询的一部分重新创建):

ID、期间(以整数表示的月数)、付款日期、购买日期。

我想在流程中创建第 5 列:新建

计算如下:

如果付款日期在购买日期的 X 个月内(​​其中 X 是月数),则为 1。

我确定这将是 case 表达式 - 但我不确定如何在 case 表达式中进行计算。

【问题讨论】:

  • 除非您使用动态 SQL,否则无法有条件地创建列...请显示示例数据、预期结果和您的尝试。
  • 可能没有很好地表达它 - 表是由存储过程创建的 - 我已经在创建表时将以下代码放入 SP

标签: sql-server tsql case


【解决方案1】:

您只想要一个case 表达式吗?像这样的:

select t.*,
       (case when purchasedate >= paymentdate and
                  purchasedate < dateadd(month, X, paymentdate)
             then 1 else 0
        end)
from t;

【讨论】:

  • 完美 - 没有意识到您可以使用 dateadd 并定义一个列来获取整数值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
相关资源
最近更新 更多