[英]Pivot join with two columns having varchar datatype in SQL Server 2012
我需要使用數據透視表從以下數據創建時間表:
我正在使用此查詢
select
start_time, end_time, s.subj_name, tt.dd
from
time_table tt
inner join
subj s on tt.subjid = s.subjid
我可以將結果轉向
我使用下面的SQL代碼來做到這一點:
--Declare necessary variables
DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
--Get unique values of pivot column
SELECT @PivotColumns = COALESCE(@PivotColumns + ',','') + QUOTENAME(dd)
FROM (SELECT DISTINCT(dd)
FROM time_table tt
WHERE divid = 1 AND tt.active = 1) AS PivotExample
SELECT @PivotColumns
--Create the dynamic query with all the values for
--pivot column at runtime
SET @SQLQuery =
N'SELECT start_time,end_time, ' + @PivotColumns + '
FROM [dbo].[time_table]
PIVOT( SUM(subjid)
FOR dd IN (' + @PivotColumns + ')) AS P'
SELECT @SQLQuery
--Execute dynamic query
EXEC sp_executesql @SQLQuery
一定要幫助我獲取主題名稱而不是subjectid作為值
由於要使用VARCHAR,因此無法使用SUM
,而必須使用MAX
或MIN
請嘗試:
SET @SQLQuery =
N'SELECT start_time,end_time, ' + @PivotColumns + '
FROM [dbo].[time_table]
PIVOT( MAX(subjectname)
FOR dd IN (' + @PivotColumns + ')) AS P'
找到了答案,它提供了更簡單的方法。 點擊獲取答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.