2017-07-27 13 views
0

Grundsätzlich habe ich diese Spalten in einer temporären Tabelle, ich möchte sie durch die dynamischen Spalten (Zahlungsmethode) zu Zeilen gruppieren und den Steuerbetrag auf der Grundlage der Zahlungsmethode zusammenfassen. Die Steuerspalte wird immer dort sein, also können Sie sie als eine statische Spalte betrachten. Die dynamischen Spalten werden in einer Variablen @PaymentMethod = [Bargeld], [Karte], usw. gespeichert ...Transpose Spalten in Zeilen und summieren gemeinsame Spalte

Cash | Card | Tax 
3.00    0.50 
3.00    0.50 
     5.00  0.70 

Ergebnis Erwartet:

Pay Method | Tax 
Cash   1.00 
Card   0.70 

Wie kann ich das erreichen? Ich habe auf UNPIVOT nachgeschlagen, aber alle Zahlungsmethoden teilen sich das gleiche Steuerspaltenfeld und das ist eigentlich das Feld, das ich zusammenfassen möchte.

Antwort

0

Verwenden Sie einfach ein case für die Aggregation:

select (case when cash is null and card is null then 'neither' 
      when cash is not null and card is not null then 'both' 
      when cash is not null then 'cash' 
      when credit is not null then 'credit' 
     end) as pay_method, 
     sum(tax) 
from t 
group by (case when cash is null and card is null then 'neither' 
       when cash is not null and card is not null then 'both' 
       when cash is not null then 'cash' 
       when credit is not null then 'credit' 
      end); 
+0

Ich konnte es nicht auf diese Weise verwenden, da die Zahlungsmethoden dynamisch sein wird. Sie sind hart codieren die Zahlungsmethoden. – user3543512

+0

@ user3543512. . . Sie können wirklich nicht dynamisch sein, wenn sie Spalten in einer Tabelle sind. –

+0

Sie sind eine temporäre Tabelle. Nehmen wir an, die Spalten wurden alle in einer Variablen gespeichert @PaymentMethod = [Cash], [Credit], etc – user3543512

Verwandte Themen