2014-11-12 8 views
8

Aşağıdaki tabloda, sütun 1'deki açıklamaların yeni pivottaki sütun başlıkları olması için dönmeyi düşündüğüm tabloya sahibim. Aşağıda sonuç aşağıda kurulum desteği almak için kod kullanıyorumPivot tablo NULL ile birden çok satır döndürür, sonuçlar bir satırda gruplandırılmalıdır

Nominal Group | GrpID | Description  | Value  | CustomerID 
---------------+-------+-----------------+-------------+----------- 
Balance Sheet | 7  | BS description | 56973.10 |  2 
Cost of Sales | 4  | COS description | 55950.17 |  2 
Sales   | 1  | Sales   | -178796.18 |  2 
Labour Costs | 5  | Wages   | 18596.43 |  2 
Overheads  | 6  | Rent   | 47276.48 |  2 

:

select * from trialbalancegrouping 
PIVOT (Sum(value) 
for nominalgroupname in ([Sales],[Cost of Sales],[Labour Costs],[Overheads])) AS PVTtable 

- İdeal

GrpID | Description | CustomerID | Sales | Cost of Sales | Labour Costs | Overheads 
------+---------------+------------+------------+---------------+--------------+----------- 
    1 | Sales  |  2  | -178796.18 |  NULL  |  NULL |  NULL 
    2 |COS Description|  2  | NULL | 55950.17 |  NULL |  NULL 
    3 | Labour  |  2  | NULL |  NULL  | 18596.43 |  NULL 
    4 | Overheads |  2  | NULL |  NULL  |  NULL | 47276.48 

, ben çıkış başına bir satır olmak isterdim müşteri, bunun gibi:

CustomerID | Sales | Cost of Sales | Labour Costs | Overheads 
-----------+------------+----------------+--------------+------------ 
    2  | -178796.18 |  55950.17 | 18596.43 | 47276.48 
+0

, sadece alt sorgudaki Açıklama kaldırıldı ve şimdi olduğu gibi birçok getirebilir bana –

cevap

8

Herhangi bir sütun tha t, böylece tüm ayrı kolondan toplanan PIVOT işleve iletilir mevcuttur ve döndürülebilir kolon örtülü gruplandırılır, yani GrpID ve Description, mevcut olduğunda, ve gruplanır dahil değildir çünkü bu nedenle kombinasyonu için bir satır elde bunların. Bir alt sorgu kullanarak pivot fonksiyonu geçirilen sütunları sınırlamak gerekir:

SELECT pvt.CustomerID, 
     pvt.Sales, 
     pvt.[Cost of Sales], 
     pvt.[Labour Costs], 
     pvt.[Overheads] 
FROM ( SELECT CustomerID, nominalgroupname, Value 
      FROM trialbalancegrouping 
     ) AS t 
     PIVOT 
     ( SUM(Value) 
      FOR nominalgroupname IN 
       ( [Sales],[Cost of Sales], 
        [Labour Costs],[Overheads] 
       ) 
     ) AS pvt; 
+0

iyi Gareth görünüyor tablo yapısını sağlayabilir Lütfen müşteri detayları gerektiği gibi. Yardımınız için teşekkürler :) – Stu412

+0

Üzgünüz, "description" alt sorgusunda 'nomgroupname' olmalıdır. – GarethD

+0

Sorun değil, birkaç saat içinde aldığımdan 5 dakika sonra beni daha da geliştirdi! Teşekkürler – Stu412

İlgili konular