2016-06-12 55 views
-1

所以我遇到它具有像這樣設計的表:顯示列到行SQL

t_Schedule   t_Prof 
----------   ---------- 
Date    ID 
ProfID    Name 
ProfID1 

我想實現的是一樣的東西:

Date   | Name 
------------------------ 
June 1, 2016 | ProfName1 
June 1, 2016 | ProfName2 

當我使用加入我得到結果如下:

Date   | ProfID | ProfID1 
    ------------------------------------ 
    June 1, 2016 | ProfName1| ProfName2 

回答

2

嘗試以下查詢:

SELECT s.[Date], x.Name 
FROM dbo.t_Schedule s 
INNER/*LEFT OUTER when column ProfID allows NULLs*/ JOIN dbo.t_Prof p ON s.ProfID = p.ID 
LEFT OUTER JOIN dbo.t_Prof p1 ON s.ProfID1 = p1.ID 
CROSS APPLY (
    SELECT p.Name WHERE p.Name IS NOT NULL 
    UNION ALL 
    SELECT p1.Name WHERE p1.Name IS NOT NULL 
) x(Name) 
+0

感謝。我想知道EXEC是否也可以解決我的問題? –

+0

好的謝謝你的信息先生波格丹 –

1

您可以使用UNPIVOT函數來完成此操作。答案在下面將詳細討論:

stackoverflow.com/questions/18026236/sql-server-columns-to-rows