Ich habe die ähnliche Frage beim letzten Mal mit mysql gepostet. Aber dieses Mal möchte ich die gesamten Pivot-Werte mit SQL Server erhalten. Ich poste auch meinen Code. pls überprüfenPivot insgesamt mit SQL Server
DB Schema ===
DATABASE Test erstellen;
CREATE TABLE [dbo].[RAccounts_Receivable](
[id] [int] NOT NULL,
[trntypename] [nvarchar](max) NULL,
[datecreated] [date] NULL,
[AmountDue] [decimal](18, 0) NULL) ;
INSERT INTO [dbo].[RAccounts_Receivable]
(id, trntypename,datecreated,AmountDue)
VALUES
(1, 'Pay Bills', '2016-01-02', 50),
(2, 'Pay Bills', '2016-01-10', 60),
(3, 'Sales Returns', '2016-01-20', 30),
(4, 'Sales Returns', '2016-01-15', 20),
(5, 'Pay Bills', '2016-02-15', 10),
(6, 'Sales Returns', '2016-02-20', 20),
(7, 'Sales Returns', '2016-02-15', 10)
-Code bisher
SELECT * FROM
(SELECT FORMAT(datecreated,'yyyyMM') AS date
,SUM(AmountDue) AS AmountDue
,trntypename
FROM RAccounts_Receivable
WHERE
(trntypename='Pay Bills' OR trntypename='Sales Return')
AND datecreated >= DATEADD(month, DATEDIFF(month, 0, GETDATE())-7, 0)
GROUP By [trntypename],FORMAT(datecreated,'yyyyMM')) AS Basedata
PIVOT
(
SUM(AmountDue) FOR date IN ([201601],[201602])
) AS p
Ergebnisse bisher
trntypename | 201601 | 201602
Pay Bills | 110 | 10
Sales Return| 50 | 30
erwarteten Ergebnisse
trntypename | 201601 | 201602 | total
Pay Bills | 110 | 10 | 120
Sales Return| 50 | 30 | 80
total | 160 | 40 | 200
noch bin ich Summen nicht in der Lage zu bekommen.
Ich bedaure es nicht gut formatiert ist, aber es funktioniert gut – JonWay
Dank für die Antwort. Leider scheint das bei mir nicht zu funktionieren. {{SELECT *, [201601] + [201602] AS Gesamt FROM RAccounts_Receivable UNION SELECT 'Gesamt' AS Gesamt, SUM ([201601]) AS '201601', SUM ([ 201602]) AS '201602', Summe ([201601] + [201602]) FROM RAccounts_Receivable}} gibt mir einen Fehler – Ja22
ich bevorzuge die ROLLUP Funktion seit [201601], [201602] sind dynamische Spalten – Ja22