Son kez mysql kullanarak benzer bir soru gönderdim. Ama bu sefer SQL sunucusunu kullanarak toplam pivot değerlerini almak istiyorum. Kodumu da gönderiyorum. lütfenSQL Server ile pivot toplamı
DB Şema === kontrol
VERİTABANI testini CREATE;
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)
Kod bugüne kadar
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
Sonuçlar şu ana kadar
trntypename | 201601 | 201602
Pay Bills | 110 | 10
Sales Return| 50 | 30
beklenen sonuçlar
trntypename | 201601 | 201602 | total
Pay Bills | 110 | 10 | 120
Sales Return| 50 | 30 | 80
total | 160 | 40 | 200
hala toplamlarını almak kuramıyorum.
EXEC(@SQL)
arayarak yürütülecektirSUM(CASE)
ve SQL oluşturmak için kullanılır Ben buna güzel biçimlendirilmemiş üzgünüm ama cevap için ince – JonWaysayesinde çalışma. Maalesef bu benim için çalışıyor gibi görünmüyor. {{SELECT *, [201601] + [201602] Toplamda RAccounts_Receivable UNION SELECT 'Toplam' AS Toplam, SUM ([201601]) AS '201601', SUM ([ 201602]) AS '201602', Sum ([201601] + [201602]) FROM RAccounts_Receivable}} bana bir hata veriyor – Ja22
[201601], [201602] dinamik sütunlar – Ja22