【发布时间】:2021-06-04 09:29:13
【问题描述】:
我有这样的数据:
如果将销售额与阈值进行比较,我需要为每个项目获取并决定“已实现”或“未实现”。如果未达到达到阈值还剩多少天。
SELECT
ID,
ItemDate,
DATEADD(dd, -(DAY(DATEADD(mm, 1, ItemDate))),
DATEADD(mm,1,ItemDate)) DateEndOfMonth,
DATEDIFF(d, ItemDate, DATEADD(dd, -(DAY(DATEADD(mm, 1, ItemDate))),
DATEADD(mm, 1, ItemDate))) AS DaysRemainingm,
ItemSales,
Logical_opr = CASE Opr
WHEN 'less than' THEN '<'
WHEN 'greater than' THEN '>'
ELSE ''
END,
Threshold
FROM
itemData
这是我正在玩弄的小提琴——>link here
我被困在这里了。请建议我如何实现我的目标
【问题讨论】:
-
嗨,梅赫迪!一个快速的问题:您想如何计算达到阈值的剩余天数?
-
@ACC 假设日期是 2020-07-29 并且销售额是 20.. 但该月的阈值是 50。所以该月的结束日期是 2020-07-31.. 所以如果我从日期和计算的结束日期做差异,我还有 2 天的时间来实现 30(即 50-20 )销售。
-
使用searched CASE expression,如
case when opr = 'less than' and sales <= threshold then 'achieved'... -
你在写
DATEADD(dd和DATEADD(day时“节省”了多少精力?哪个更具可读性?你可以通过同时使用“d”和“dd”来表示“day”来增加难度。 -
@SM我还是新手...下次我会记住的
标签: sql sql-server database