У меня есть этот запрос (Sql-SRV 2012 SE):SQL-использование PIVOT с UNION?
SELECT Dimension,
[Revenues],
[Cost of Sales],
[ GrossProfit]
FROM
(select isnull((CASE WHEN BAA.ACC_0 IN ('41100','42000','45100','42200','42300','42400','45200','45205','41850','48100','41150','41600'
, '46100','44100')
Then 'Revenues' Else 'Cost of Sales' End) , ' GrossProfit') as Type,
ISNULL(REPLACE(LTRIM(RTRIM(CONCAT(CCE1_0, CCE6_0, CCE7_0))),'NONE',''), '[Total]') as Dimension,
SUM((BAA.DEBLED_1 - BAA.CDTLED_1) +
(BAA.DEBLED_2 - BAA.CDTLED_2) +
(BAA.DEBLED_3 - BAA.CDTLED_3) +
(BAA.DEBLED_4 - BAA.CDTLED_4) +
(BAA.DEBLED_5 - BAA.CDTLED_5) +
(BAA.DEBLED_6 - BAA.CDTLED_6) +
(BAA.DEBLED_7 - BAA.CDTLED_7) +
(BAA.DEBLED_8 - BAA.CDTLED_8)+
(BAA.DEBLED_9 - BAA.CDTLED_9)+
(BAA.DEBLED_10 - BAA.CDTLED_10)+
(BAA.DEBLED_11 - BAA.CDTLED_11)+
(BAA.DEBLED_12 - BAA.CDTLED_12)) * (-1) as Amount
from x3v6.CICPROD.BALANA BAA where BAA.FIY_0 = RIGHT(YEAR(CAST(GETDATE() as DATE)),2)
and BAA.ACC_0 IN (
'49100','51100','52100','52200','52300','52400','52750','42100','53100','57100','70800','57200','57300',
'57400','57500','58100','58200','58300','58400','59100','59200','70240','81300','41100','42000','45100',
'42200','42300','42400','45200','45205','41850','48100','41150','41600', '46100','44100') and BAA.BPR_0 = '' and BAA.FCY_0 = 'OAK'
Group by Grouping Sets ((CASE WHEN BAA.ACC_0 IN ('41100','42000','45100','42200','42300','42400','45200','45205','41850','48100','41150','41600'
, '46100','44100') Then 'Revenues' Else 'Cost of Sales' End) ,()) , GROUPING SETS((REPLACE(LTRIM(RTRIM(CONCAT(CCE1_0, CCE6_0, CCE7_0))),'NONE','')) ,())) as a1
PIVOT
(SUM(Amount)
FOR Type
IN ([Revenues], [Cost of Sales], [ GrossProfit])
) AS b
который возвращает совершенно то, что я хотел добиться, которая заключается в следующем:
>
> Dimension Revenues Cost of Sales GrossProfit
> 0.00000000000 174034.31000000000 174034.31000000000
BLENDING 2811969.85000000000 -1862626.99000000000 949342.86000000000
> COCOA 5746483.14000000000 -3877530.22000000000 1868952.92000000000
> COPACK 1904620.24000000000 -1255488.25000000000 649131.99000000000
> DSM 11530715.99000000000 -9598145.67000000000 1932570.32000000000
> EVERLAST 432385.42000000000 -392729.54000000000 39655.88000000000
> IFF 5677916.64000000000 -4879025.50000000000 798891.14000000000
> KW 914780.08000000000 -778366.84000000000 136413.24000000000
> KW-COCOA 1102257.81000000000 -527290.76000000000 574967.05000000000
> KWBL 506291.57000000000 -295441.61000000000 210849.96000000000
> LALLEMAND 533787.34000000000 -518768.64000000000 15018.70000000000
> RM-RESALE 1807209.70000000000 -1627262.93000000000 179946.77000000000
> ROQ 2804133.54000000000 -2248721.60000000000 555411.94000000000
> TLBL 1794480.19000000000 -1468205.23000000000 326274.96000000000
> TLCI 6956307.61000000000 -5141794.87000000000 1814512.74000000000
> TLCIS 813840.98000000000 -693984.47000000000 119856.51000000000
> TOLLBLND 364579.49000000000 -217778.07000000000 146801.42000000000
> WRH NULL 2080.97000000000 2080.97000000000
> [Total] 45701759.59000000000-35207045.91000000000 10494713.68000000000
Я пытался использовать UNION, чтобы добавить «Валовой процент прибыли» (в основном столбец GROSSPROFIT/REVENUES * 100, но я не знаю, работает ли он с точкой опоры. Что мне нужно сделать, чтобы добиться этого, и кому-нибудь повезло с этим?
Непонятно. –