我试图加入引用同一个表的3个select语句。
每个选择语句的条件略有不同。
欢迎任何建议。
谢谢。
这些查询有效:
select [Account Name], sum(amount)as Amount from [dbo].[fmdr_1.19]
where datepart(month,Period)=3
group by [Account Name], datepart(month,Period), [Account Name]
select [Account Name], sum(amount)as Q2 from [dbo].[fmdr_1.19]
where datepart(month,Period)=6
group by [Account Name]
select [Account Name], sum(amount)as Q3 from [dbo].[fmdr_1.19]
where datepart(month,Period)=9
group by [Account Name]
我试图将这三个select语句中的每一个都加入到1个表中。当我运行以下代码时,我得到的错误是:
'专栏' T1.Q1'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。'
我想我一定不能远离。我确信有更有效的方法可以达到相同的结果,但我也在努力提高我加入桌子的能力。
谢谢!
Select N0.[Account Name], T1.Q1, T2.Q2, T3.Q3 from [dbo].[fmdr_1.19] N0
join
(select [Account Name], sum(amount) as Q1 from [dbo].[fmdr_1.19]
where datepart(month,Period)=3
group by [Account Name]) T1
on T1.[Account Name] = N0.[Account Name]
join
(select [Account Name], sum(amount)as Q2 from [dbo].[fmdr_1.19]
where datepart(month,Period)=6
group by [Account Name]) T2
on T2.[Account Name] = N0.[Account Name]
join
(select [Account Name], sum(amount)as Q3 from [dbo].[fmdr_1.19]
where datepart(month,Period)=9
group by [Account Name]) T3
on T3.[Account Name]=N0.[Account Name]
group by N0.[Account Name]
答案 0 :(得分:0)
这样的事情应该更有效率:
SELECT SUM(t1_q1) AS Q1, SUM(t2_q2) AS Q2, SUM(t3_q3) AS Q3
FROM
(SELECT
CASE WHEN datepart(month,Period)=3 THEN amount ELSE 0 END AS t1_q1,
CASE WHEN datepart(month,Period)=6 THEN amount ELSE 0 END AS t2_q2,
CASE WHEN datepart(month,Period)=9 THEN amount ELSE 0 END AS t3_q3
FROM [dbo].[fmdr_1.19]
GROUP BY [Account Name]) AS grouped_tbl