gpt4 book ai didi

SQL Server 如何将3个查询合并为1个?

转载 作者:行者123 更新时间:2023-12-03 02:43:13 25 4
gpt4 key购买 nike

我想将以下三个查询压缩为一个查询,并将总计分为 3 列。哦,我该怎么做,这样我就不必宣布日期了。我希望它“知道”当前的日期、月份和年份。

DECLARE @myDate as datetime
SET @myDate = '2015-01-1'
select SUM(Amount) as 'Day Total'
from [Accounting].[dbo].[HandPay]
where AccountingDate>=@myDate and AccountingDate<dateadd(day,1,@myDate)

select SUM(Amount) as 'Month Total'
from [Accounting].[dbo].[HandPay]
where AccountingDate>=@myDate and AccountingDate<dateadd(MONTH,1,@myDate)

select SUM(Amount) as 'Day Total'
from [Accounting].[dbo].[HandPay]
where AccountingDate>=@myDate and AccountingDate<dateadd(year,1,@myDate)

执行此操作的最佳方法是什么?谢谢!

感谢所有超快的回复!现在这个问题已经解决了。

最佳答案

如果我正确理解了这个问题,那么这样的事情应该有效:

declare @today date = convert(date, getdate());
select
[Day Total] = sum(case when [AccountingDate] >= @today and [AccountingDate] < dateadd(day, 1, @today) then [Amount] else 0 end),
[Month Total] = sum(case when [AccountingDate] >= @today and [AccountingDate] < dateadd(month, 1, @today) then [Amount] else 0 end),
[Year Total] = sum(case when [AccountingDate] >= @today and [AccountingDate] < dateadd(year, 1, @today) then [Amount] else 0 end)
from
[Accounting].[dbo].[HandPay];

请注意,[月份总计][年度总计] 并不给出当前月份/年份内发生的条目的总和,而是给出总和从今天起一个月/一年内发生的条目。我不确定这是否是您想要的,但它似乎与原始查询一致。

更新:正如下面 D Stanley 所建议的,您可以稍微简化一下,因为您知道组成 [Day Total] 的日期范围[月总计] 总和完全包含在构成[年总计] 总和的日期范围内。这可能是这样的:

declare @today date = convert(date, getdate());
select
[Day Total] = sum(case when [AccountingDate] < dateadd(day, 1, @today) then [Amount] else 0 end),
[Month Total] = sum(case when [AccountingDate] < dateadd(month, 1, @today) then [Amount] else 0 end),
[Year Total] = sum([Amount])
from
[Accounting].[dbo].[HandPay]
where
[AccountingDate] >= @today and [AccountingDate] < dateadd(year, 1, @today);

关于SQL Server 如何将3个查询合并为1个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com