좋은 아침,는 어떻게이 전망이 두보기
가입 저장 프로 시저 SQL Server 2005에서 PIVOT을 사용하는 계정, UBCATEGORY 및 DirectCost.
내 목표 : UBCATEGORY에 의해 ICCUDays 및 DirectCost가있는 계정 당 하나의 레코드를 출력하는 저장 프로 시저를 만듭니다. 이는 크로스 탭 또는 피벗 일 것이며 하나 이상의 직접 비용 ubcategory bucket에서 null 가능성을 허용해야합니다. 마지막으로이 크로스 탭 또는 피벗을 새 테이블 EnctrUBCatPivot에 보내야합니다.
질문 : 위의 시나리오에서 올바른 PIVOT 구문은 무엇입니까? 많은 UBCATEGORY 항목에 대한 직접 비용을 감안할 때 TSQL을 반복 작성하고 계정 및 UBCATEGORY별로 피벗 (pivot)을 수행하려면 어떻게해야합니까? 이 모든 것이 하나의 sproc에서 성취 되었습니까? 아니면 결과를 테이블에 쓰려면 여러 sprocs로 분리되어야합니까? 이 계정 및 각 UBCATEGORY에 대한 모든 직접 비용을 출력한다는 점에서
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
이 잘 작동 :
는 여기에 지금까지 작성한 코드입니다. 그러나 ICCUDays의 피벗에 열을 추가하려면 ACCOUNT의 vwICCUDAYS에 내부 조인을해야합니다. 최종 피벗 열은 계정, ICCUDays, 각 UBCATEGORYmid의 직접 비용이어야합니다.
필자는 병합 구문에 익숙하지 않아 추가 열을 추가하기 위해이를 수정하는 방법을 식별 할 수 없으며 ICCUDays를 추가하기 위해 내부 조인 구문을 추가하는 방법이나 위치가 확실하지 않습니다.
누군가 적절한 방향으로 나를 가리킬 수 있습니까? 감사합니다. 시드
뷰를 쿼리의 기초로 사용하는 특별한 이유가 있습니까? –