按月求和和计数,显示为该月的最后一天

Sum and Count by month, shown with last day of that month

我有一笔交易 table 是这样的:

 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 上使用此数据,因此我无法在 "line graphic" 中显示这些结果,因为年份和月份信息位于不同的列中。

我尝试将 SQL 上的格式更改为 'YYYYMM' 唉,powerBI 无法将此列识别为日期。

所以,最后,我需要一个结果 table 看起来像这样:

 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

我尝试了几个小改动,但没有结果。

非常感谢您的帮助。

您可以尝试以下语句:

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