Доброе утро,Как использовать PIVOT в SQL Server 2005 хранимая процедура Вхождение два Вида
У меня 2 просмотры: ICCUDays, который содержит одну запись за счет с поля СЧЕТ и ICCUDays, ICCUEnctrSelectedRevCatsDirCost, который содержит несколько записей на счет с полями ACCOUNT, UBCATEGORY и DirectCost.
Моя цель: создать хранимую процедуру, которая выводит одну запись за каждый ACCOUNT с помощью ICCUDays и DirectCost по UBCATEGORY. Это будет кросс-таблица или сводчатая диаграмма и должна допускать возможность нулевых значений в одном или нескольких контейнерах со средней стоимостью. Наконец, эту кросс-таблицу или опорную точку необходимо отправить в новую таблицу EnctrUBCatPivot.
Вопросы: Каков правильный синтаксис PIVOT для вышеуказанного сценария? Учитывая, что я хочу отключить прямую стоимость для многих записей UBCATEGORY, как я могу написать TSQL для их повторения и поворота по учетной записи и UBCATEGORY? Все ли это выполняется в одном sproc, или его нужно разделить на несколько sprocs, чтобы записать результаты в таблицу?
Вот код, который я написал до сих пор:
ALTER PROCEDURE [dbo].[spICCUMain]
-- Add the parameters for the stored procedure here
AS
declare @columns varchar(8000)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @columns = COALESCE(@columns + ',[' + cast(UBCATEGORYmid as varchar) + ']','[' + cast(UBCATEGORYmid as varchar)+ ']')
FROM vwICCUEnctrSelectedRevCatsDirCost
GROUP BY UBCATEGORYmid
DECLARE @query VARCHAR(8000)
SET @query = '
SELECT *
FROM vwICCUEnctrSelectedRevCatsDirCost
PIVOT
(
MAX(DirectCost)
FOR [UBCATEGORYmid]
IN (' + @columns + ')
)
AS p'
EXECUTE(@query)
END
Это прекрасно работает в том, что он выдает счета и все прямые затраты на каждый UBCATEGORY. Тем не менее, мне нужно внутреннее соединение с vwICCUDAYS на ACCOUNT, чтобы добавить столбец в точку опоры для ICCUDays. Конечными опорными столбцами должны быть учетная запись, ICCUDays, Direct Cost для каждого UBCATEGORYmid.
Я не очень хорошо знаком с синтаксисом coalesce и поэтому не могу понять, как его изменить, чтобы добавить дополнительные столбцы, и я не уверен, как/где добавить синтаксис внутреннего соединения для добавления ICCUDays.
Может ли кто-нибудь указать мне правильное направление? Спасибо, Sid
Есть ли какая-то особая причина использовать представления в качестве основы для запроса? –