ich SQL lerne, und ich habe Tabelle, die wie folgt aussieht:SQL nvarchar ist ungültig für sum Operator
Id Name Payd Note
1 John 5.00 R:8days;U:5$
2 Adam 5.00 R:8days;
3 John 10.00 R:8days;
4 John 10.00 R:8days;
5 Adam 15.00 R:30days;
ich, so etwas machen möchten:
Id Name Usage 5.00 10.00 15.00 Sum
1 John 5 5.00 20.00 0 25.00
2 Adam 5.00 0 15.00 20.00
ich überprüfen möchten, dass Notizspalte, wenn 'U: 5 $' darin ist und dann eine 5 zu dem Kunden hinzufügen, der 'U: 5 $' in der Notizspalte hat, wenn er nichts hinzufügt.
Mein Code sieht wie folgt aus:
;with cte as (
select Customer, PaydAmount, PaydAmount as Payd, Note as Usage
from t1
)
select
Customer, Usage
,[4.00] = ISNULL([4.00],0)
,[5.00] = ISNULL([5.00],0)
,[9.00] = ISNULL([9.00],0)
,[10.00] = ISNULL([10.00],0)
,[15.00] = ISNULL([15.00],0)
,[18.00] = ISNULL([18.00],0)
,[20.00] = ISNULL([20.00],0)
,[25.00] = ISNULL([25.00],0)
,[50.00] = ISNULL([50.00],0)
,[Payd] =ISNULL([4.00],0) + ISNULL([5.00],0) + ISNULL([9.00],0) + ISNULL([10.00],0) + ISNULL([15.00],0) + ISNULL([18.00],0) + ISNULL([20.00],0) + ISNULL([25.00],0) + ISNULL([50.00],0)
from cte
pivot (
sum(PaydAmount) for Payd in ([4.00],[5.00],[9.00], [10.00], [15.00],[18.00], [20.00], [25.00], [50.00]))pvt
order by Customer;
Ihre Ausgabe ist kompliziert. Was passiert nach der Verwendungsspalte? –
ok, die Beträge, die bezahlt werden, sind statisch, so dass es bezahlt werden konnte 4,00 $, 5,00 $, 9,00 $ ... und in diesen Spalten sind alle Werte, die bezahlt wurden die Menge, die die gleiche wie Spalte Name ist. Zum Beispiel zahlt John 2 mal 4 $, dann gibt es 8 $ bei 4,00 von John. Summe am Ende ist die Summe aller bezahlten Beträge. Ich will nur überprüfen, ob es U: 5 $ in Anmerkung gibt und dann 5 in 5 Spalte durch den Kunden hinzufügen, der tatsächlich U5: $ in seiner Anmerkung hatte. – vidooo
Aus der Fehlermeldung sieht es so aus, als ob Ihre Beträge in 'NVARCHAR'-Spalten gespeichert sind. Entweder stellen Sie sicher, dass sie in 'GELD' oder' DECIMAL' Typ Spalten gespeichert sind, oder 'CAST' die Daten zu' GELD' oder 'DEZIMAL' in der' SUMME'. –