수개월 동안 데이터를 성공적으로 피킹 할 수있었습니다. 그러나 피벗 내 KPIData 테이블에 값이있는 행을 반환합니다.레코드가 없어도 테이블 피벗에서 모든 행을 반환합니다 (교차 가입?)
필자는 KPIData에 대한 달 (Months)을 KPIGraph에서 가져오고 필터링을 위해 KPIGraph에서 일부 필드를 가져 왔습니다. KPIGraphs 행을 추가하고 KPIData에 관련된 레코드가 없을 때마다 매월 열에 null을 표시 할 수 있기를 원합니다. 현재 이것은 내 KPIData 테이블에 적어도 하나의 값을 더하는 경우에만 작동합니다. 그러면 조인으로 인해 모든 것이 링크됩니다. http://goo.gl/9lvhF
좀 읽어까지 다 내가 십자가 여기 조인을 사용 likey해야합니다 것으로 나타났습니다 다음과 같이
의 관계는 설정되어 있습니까? 나는 이것들 중 하나를 사용한 적이 없으며 몇 가지 더 파고 들자 마자 내 피벗 SQL에 그것의 구현을 완전히 혼란스럽게했다.
SELECT *
FROM (
SELECT [t0].[GraphID], CASE MonthID
WHEN 1 THEN 'October'
WHEN 2 THEN 'November'
WHEN 3 THEN 'December'
WHEN 4 THEN 'January'
WHEN 5 THEN 'February'
WHEN 6 THEN 'March'
WHEN 7 THEN 'April'
WHEN 8 THEN 'May'
WHEN 9 THEN 'June'
WHEN 10 THEN 'July'
WHEN 11 THEN 'August'
WHEN 12 THEN 'September'
END AS [Month], [t0].[Value], [t3].[Graph_Type], [t5].[Department], [t6].
[Type], [t8].[Financial_Year], [t7].[FYID], [t4].[KPITypeID]
FROM [KPIDatas] AS [t0]
INNER JOIN [Months] AS [t1] ON [t1].[ID] = [t0].[MonthID]
INNER JOIN [KPIGraphs] AS [t2] ON [t2].[ID] = [t0].[GraphID]
INNER JOIN [GraphTypes] AS [t3] ON [t3].[ID] = [t2].[GraphTypeID]
INNER JOIN [KPIs] AS [t4] ON [t4].[ID] = [t2].[KPIID]
INNER JOIN [Departments] AS [t5] ON [t5].[ID] = [t4].[DeptID]
INNER JOIN [KPITypes] AS [t6] ON [t6].[ID] = [t4].[KPITypeID]
INNER JOIN [CSFs] AS [t7] ON [t7].[ID] = [t4].[CSFID]
INNER JOIN [FYs] AS [t8] ON [t8].[ID] = [t7].[FYID]
) TableDate
PIVOT(SUM(Value) FOR [Month] IN (
[October], [November], [December], [January], [February], [March], [April]
, [May], [June], [July], [August], [September]
)) PivotTable
이 문제에 대한 도움이 필요합니다.
어떤 샘플 데이터로 [SQL Fiddle] (http://sqlfiddle.com/)을 만들 수 있습니까? 어떤 데이터도 보지 않고 생각할 수있는 유일한 방법은 CTE 또는 캘린더 테이블을 사용하여 가입 할 개월 목록을 만드는 것입니다. – Taryn