Я учусь SQL и у меня есть таблица, которая выглядит следующим образом:SQL NVARCHAR недопустим для суммы оператора
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;
Я хочу сделать что-то вроде этого:
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
Я хочу, чтобы проверить, что примечание, если в нем есть «U: 5 $», а затем добавить 5 к этому клиенту, который имеет «U: 5 $» в столбце примечания, если он ничего не добавляет.
Мой код выглядит следующим образом:
;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;
Ваш выход сложный. Что происходит после столбца использования? –
ok, суммы, которые являются payd, являются статичными, поэтому они могут быть оплачены 4.00 $, 5.00 $, 9.00 $ ... и в этих кулонах суммируются все значения, которые были оплачены суммой, которая совпадает с именем столбца. Например, john payd 2 раза 4 $, тогда у Джона есть 8 $ в 4.00. Сумма в конце представляет собой сумму всех сумм payd. Я просто хочу проверить, есть ли U: 5 $ в примечании, а затем добавить 5 в 5 столбцах от клиента, что в действительности его U5: $. – vidooo
Из сообщения об ошибке видно, что ваши суммы хранятся в столбцах «NVARCHAR». Либо убедитесь, что они хранятся в столбцах типа 'MONEY' или' DECIMAL', либо 'CAST' данные в' MONEY' или 'DECIMAL' в' SUM'. –