簡體   English   中英

樞軸連接與SQL Server 2012中具有varchar數據類型的兩列

[英]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 ,而必須使用MAXMIN

請嘗試:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM