【发布时间】:2019-08-17 12:49:10
【问题描述】:
我需要从月初的销售,即 8 月 1 日到 8 月 16 日,所以这是我的销售查询 - 这里 Net_Amount 是销售数字的列,
select sum(case when Date=FORMAT(GetDate()-1, 'yyyy-MM-dd')
then Net_Amount else 0
end) as TodaysSales
From SalesM
现在我们有星期五假期,我希望如果星期五来了,那么它应该从 8 月 1 日到 8 月 15 日,即星期四。我有一个表日期表有一个列 Isweekend ='1' for Friday ,我如何在我的查询中使用它,因为我已经放了一个案例 SalesM 表有 Month 列,Date 表也有月份和年份列。
select case when satrndd = FORMAT(GetDate()-1, 'yyyy-MM-dd' )
then inna when IsWeekend='1' then
else 0
end as Todaystotal
select case when satrndd = FORMAT(GetDate()-1, 'yyyy-MM-dd' )
then inna
when IsWeekend='1' then
else 0
end as Todaystotal
【问题讨论】:
-
为此您需要一个日历表。有很多关于如何实现目标的例子,其中很多都是关于 SO 的。您对此事的搜索(两个日期之间的天数,不包括周末/节假日)告诉了您什么,以及您不了解的哪些内容,以便我们向您解释它们是如何工作的?
-
另一方面,如果没有人向您提及它:SQL Server 2008 现在完全不支持了。建议您尽快查看升级路径。
-
您能否添加一些具有表结构和预期输出的示例数据?
-
输出是我需要昨天的总销售额所以昨天是假期对我们来说,如果我将使用此查询选择 sum(case when Date=FORMAT(GetDate()-1, 'yyyy-MM- dd') 然后 Net_Amount else 0 end) as TodaysSales 然后这个查询给我零结果,因为昨天是假期所以而不是假期,它应该将 8 月 15 日算作销售额
-
如果你使用的是 SQL Server 2008,你不可能使用
FORMAT;它是在 2012 年推出的(无论如何最好避免先生,因为它的性能不佳)。
标签: sql sql-server sql-server-2008