gpt4 book ai didi

sql-server - SQL如何显示一个月的 '0'值,如果该月的表中不存在数据

转载 作者:行者123 更新时间:2023-12-04 05:48:14 31 4
gpt4 key购买 nike

首先我的结果是这样的:


康顿

塞尔卡普斯科德
贝洛普


459611
1
巴加
156000

459611
2
巴加
73000

459611
4
巴加
217000

459611
5
巴加
136000

459611
1
西沃
45896

459611
3
西沃
32498

459611
4
西沃
9841

330096
1
巴加
42347

330096
3
巴加
3695


我试图在多个帐户上显示 2 个月的预订,每个帐户 ( KONTONR ) 有几个记录预订的代码 ( SELSKAPSKODE ) (预订总和为 BELOP )。我想概述每个帐户(BELOP)每月每个代码(KONTONR)的预订总和(SELSKAPSKODE)。我的问题是,如果没有对该代码进行预订,则该代码不会在一个月内显示。有没有办法来解决这个问题?我理解为什么代码不显示,因为它们根本不在我要查询的表中。而且我怀疑解决方案是制作一个“假”表,然后将其与“另一个”表连接(左外连接?)。
我只是无法让它工作,我对 SQL 很陌生。有人可以帮忙吗?
我的查询看起来像这样(我只插入了“嵌套”查询来设置连接,如果这有意义吗?!):

SELECT TOP (100) PERCENT KONTONR, Month, SELSKAPSKODE, BELOP
FROM (
SELECT SELSKAPSKODE, KONTONR, SKIPS_KODE, MONTH(POSTDATO) AS Month, SUM(BELOP) AS BELOP
FROM dbo.T99_DETALJ
WHERE (POSTDATO >= '2012-01-01') AND (BILAGSART = 0 OR BILAGSART = 2)
GROUP BY SELSKAPSKODE, KONTONR, SKIPS_KODE, MONTH(POSTDATO)
) AS T99_summary
GROUP BY KONTONR, SELSKAPSKODE, Month, BELOP
ORDER BY KONTONR, SELSKAPSKODE, Month
所以最后我想“填补”缺失的月份(见开头的表格),例如帐户( KONTONR)459611 第 3 个月是“缺失”的。我想显示第 3 个月,预订总和 ( BELOP) 为“0”。非常感谢任何帮助,在此先感谢!

最佳答案

您可以使用值 1-12 查询表并左外连接您的结果。

这是一个使用表变量而不是您的查询和 CTE 来构建带有数字的表的示例。

declare @T table
(
Month int
)

insert into @T values(1)
insert into @T values(1)
insert into @T values(1)
insert into @T values(3)
insert into @T values(3)

;with Months(Month) as
(
select 1
union all
select Month + 1
from Months
where Month < 12
)
select M.Month,
count(T.Month) Count,
isnull(sum(T.Month), 0) Sum
from Months as M
left outer join @T as T
on M.Month = T.Month
group by M.Month

结果:
Month       Count       Sum
----------- ----------- -----------
1 3 3
2 0 0
3 2 6
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 0

关于sql-server - SQL如何显示一个月的 '0'值,如果该月的表中不存在数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416201/

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