按月计算总和和计数,以该月的最后一天显示

问题描述 投票:0回答:1

我有一个这样的交易表。

 Trandate    channelID   branch    amount
---------   ---------   ------    ------
01/05/2019     1          2        2000
11/05/2019     1          2        2200
09/03/2020     1          2        5600
15/03/2020     1          2        600
12/10/2019     2         10        12000
12/10/2019     2         10        12000
15/11/2019     4          7        4400
15/02/2020     4          2        2500

我需要按年和月计算交易金额和次数 我试过这个。

select DISTINCT 
   DATEPART(YEAR,a.TranDate) as [YearT],
   DATEPART(MONTH,a.TranDate) as [monthT],
   count(*) as [countoftran], 
   sum(a.Amount) as [amount], 
   a.Name as [branch], 
   a.ChannelName as [channelID] 
from transactions as a
where a.TranDate>'20181231' 
group by a.Name, a.ChannelName, DATEPART(YEAR,a.TranDate), DATEPART(MONTH,a.TranDate) 
order by a.Name, YearT, MonthT

效果很好 然而,我将在PowerBI上使用这些数据,因此,由于年和月的信息是在不同的列中,我不能用 "线图 "显示这些结果。

我试着在SQL上将格式改为 'YYYYMM' 可惜powerBI并没有把这一列识别为日期。

所以,最后,我需要的结果表是这样的。

 YearT      channelID   branch    Tamount   TranT
---------   ---------   ------    -------   -----
31/05/2019     1          2        4400      2
30/03/2020     1          2        7800      2
31/10/2019     2         10        24000     2
30/11/2019     4          7        4400      1
29/02/2020     4          2        2500      1

我试过几次小改动都没有结果

非常感谢帮助。

sql sql-server powerbi powerbi-desktop
1个回答
0
投票

你可以用下面的语句试试。

SELECT 
   EOMONTH(DATEFROMPARTS(YEAR(Trandate), MONTH(Trandate), 1)) AS YearT,
   branch, channelID,
   SUM(amount) AS TAmount,
   COUNT(*) AS TranT
FROM (VALUES
   ('20190501', 1,  2, 2000),
   ('20190511', 1,  2, 2200),
   ('20200309', 1,  2, 5600),
   ('20200315', 1,  2, 600),
   ('20191012', 2, 10, 12000),
   ('20191012', 2, 10, 12000),
   ('20191115', 4,  7, 4400),
   ('20200215', 4,  2, 2500)
) v (Trandate, channelID, branch, amount)
GROUP BY DATEFROMPARTS(YEAR(Trandate), MONTH(Trandate), 1), branch, channelID
ORDER BY DATEFROMPARTS(YEAR(Trandate), MONTH(Trandate), 1)

结果:

YearT       branch  channelID   TAmount TranT
2019-05-31  2       1           4200    2
2019-10-31  10      2           24000   2
2019-11-30  7       4           4400    1
2020-02-29  2       4           2500    1
2020-03-31  2       1           6200    2
© www.soinside.com 2019 - 2024. All rights reserved.