在表格中有几个月的时间
A Sales
--------------
Jan14 20
Feb14 12
Mar14 13
Apr14 10
May14 10
所以我想要一些显示季度
输出的东西Qtr Sales
---------------
QTR114 45
QTR214 20
Qtr114 = Jan14 + feb14 + mar14同样适用于qtr214
如何动态地做到这一点?
答案 0 :(得分:0)
如果您按照提供给我们的方式存储您的数据,那么这可行:
DECLARE @Test TABLE
(
A VARCHAR(10)
, Sales INT
);
INSERT INTO @Test
(A, Sales)
VALUES
('Jan14', 20)
, ('Feb14', 12)
, ('Mar14', 13)
, ('Apr14', 10)
, ('May14', 10)
, ('Jun14', 15)
, ('Jul14', 80)
, ('Dec14', 15)
, ('Jan15', 15);
SELECT 'QTR' + CONVERT(VARCHAR(1), Q.Quarter) + (RIGHT(Y.Year, 2)) AS Qtr , SUM(Sales) AS Total
FROM @Test AS T
CROSS APPLY (SELECT DATEPART(YEAR, STUFF(T.A, 4, 0, ' 20'))) AS Y(Year)
CROSS APPLY (SELECT DATEPART(QUARTER, STUFF(T.A, 4, 0, ' 20'))) AS Q(Quarter)
GROUP BY Y.Year, Q.Quarter
ORDER BY Y.Year, Q.Quarter
我必须将您的日期格式化为正确的格式才能进行分组。 CROSS APPLY只是为了让代码更具可读性。