У меня есть таблица инвентаризации с warehouse, product, and available
колонн, выглядит следующим образом:Как создать столбец «Всего» и нижний колонтитул из сводной таблицы?
warehouse product available
John2196 KITCOMP01 7
John2196 KITCOMP01 12
John2196 KITCOMP02 7
JohnS196 KITCOMP01 9
JohnS196 KITCOMP03 1
И колонна склад поворотными для создания этого:
product John2196 JohnS196
KITCOMP01 19 9
KITCOMP02 7 NULL
KITCOMP03 NULL 1
с этим кодом
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Warehouse)
from tlninventory
group by Warehouse
order by Warehouse
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') ,1,1,'')
set @query = 'SELECT product,' + @cols + ' from
(
select product, warehouse, available
from tlninventory
) x
pivot
(
sum(available)
for warehouse in (' + @cols + ')
) p '
execute(@query)
Теперь я необходимо получить общую колонку и итоговую нижнюю строку, игнорируя значения NULL, но поскольку заголовки создаются с помощью точки опоры и этот запрос будет работать на нескольких таблицах с разными складами и продуктами, то есть заголовки никогда не будут одинаковыми, я не могу суммировать статические столбцы, например, this thread.
Для справки мне нужен финальный стол, который выглядит как:
product John2196 JohnS196 Total
KITCOMP01 19 9 28
KITCOMP02 7 NULL 7
KITCOMP03 NULL 1 1
Total 26 10 36
ЗАКАНЧИВАТЬ накопительным, куб, и группировка множества https://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx – Jeremy
@Jeremy Will делать. Спасибо! –