Выберите другие строки таблицы с помощью сводной таблицы
У меня есть таблица SalesDetails, например
salesid invno сумма
1 345 5000
2 678 500
3 111 1000
4 222 2000
3 333 3000
и таблица TaxDetails
tdid salesid taxid taxname сумма
2 1 1 CST 100
3 1 2 НДС 200
4 1 3 ст 300
5 2 1 НДС 400
6 2 2 ST 500
7 3 1 CST 600
8 3 2 НДС 700
9 3 3 ст 800
с помощью этого запроса
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(taxname) from TaxDetails where salesid=1 group by taxname, taxid order by taxid FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = N'SELECT ' + @cols + N' from ( select amount, taxname from TaxDetails where salesid=1 ) x pivot ( max(amount) for taxname in (' + @cols + N') ) p ' exec sp_executesql @query;
Я получил такой результат
СТ НДС КНТ
100 200 300
Но мне нужны данные такого формата
salesid invno сумма CST НДС ST
1 345 5000 100 200 300
2 678 500 400 500
3 111 1000 600 700 800
4 222 2000 0 0 0
3 333 3000 0 0 0
Пожалуйста, помогите мне
заранее спасибо...
Что я уже пробовал:
Объявите @cols как NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
выберите @седла = гадость((выбора ',' + функции quotename(taxname)
из TaxDetails, где salesid=1
группа по taxname, taxid
заказ по taxid
ДЛЯ XML PATH (") ВВЕДИТЕ
). value ('.', ' NVARCHAR (MAX)')
,1,1,'')
set @query = N'Select '+ @cols + N ' from
(
выберите сумму, имя налога
из TaxDetails, где salesid=1
) икс
стержень
(
Макс. (сумма)
для taxname in (' + @cols + N')
) п '
exec sp_executesql @query;
CHill60
Это поможет, если вы действительно дадите нам правильную схему таблицы - "недопустимое имя столбца "налог"". Улучшить вопрос свяжите и дайте нам правильный макет таблицы и примеры данных - в частности, таблицу SalesInvoiceTax
Ravi Sargam
Пожалуйста, проверьте сейчас....... Я дал две таблицы SalesDetails и TaxDetails