检查了一些类似的帖子,但他们都有一个共同的ID,但这些并非如此,我希望你能帮助我。
我想要实现的目标是:
QTR1 | QTR2 | SUM(Sales) | SUM(Sales2)
1 2 9 8
1 3 9 7
1 4 9 6
2 1 8 9
2 3 8 7
依此类推所有值可以获得总共12个结果(每个季度与其他三个季度进行比较.qtr1和qtr2只是为了区分列)。我目前只能做四分之一的产品......
SELECT d1.quarter 'qtr1' , a.quarter 'qtr2'
FROM datedim d1, datedim a
WHERE a.quarter <> d1.quarter
GROUP BY a.quarter, d1.quarter;
但是,当我从收入表中添加季度SUM(收入)的总和时,查询会挂起并且永远不会完成。收入表通过代理键连接到包含季度的日期表,因此理想情况下必须是
FROM datedim, earningsfact
为了获得两种数据类型并聚合销售。
答案 0 :(得分:2)
假设我正确理解了问题,这是一个示例解决方案:
declare @test table ([year] int, [quarter] int, sales money)
insert into @test values (2001, 1, 1100)
insert into @test values (2001, 2, 2100)
insert into @test values (2001, 3, 3100)
insert into @test values (2001, 4, 4100)
insert into @test values (2002, 1, 1200)
insert into @test values (2002, 2, 2200)
insert into @test values (2002, 3, 3200)
insert into @test values (2002, 4, 4200)
insert into @test values (2003, 1, 1300)
insert into @test values (2003, 2, 2300)
insert into @test values (2003, 3, 3300)
insert into @test values (2003, 4, 4300)
; with summary (quarter, salesTotal) as
(
select quarter, sum(sales)
from @test
group by [quarter]
)
select
s1.quarter [QTR1]
, s2.quarter [QTR2]
, s1.salesTotal [SUM(Sales1)]
, s2.salesTotal [SUM(Sales1)]
from
summary s1
join summary s2
on s1.quarter != s2.quarter
order by
s1.quarter
, s2.quarter
假设您有多年的季度数据。公用表表达式将它全部汇总到四分之一,select语句将每个季度与每个其他季度进行比较。