Sql server 将列显示到SQL行中

Sql server 将列显示到SQL行中,sql-server,tsql,Sql Server,Tsql,因此,我遇到一个表,它的设计如下: t_Schedule t_Prof ---------- ---------- Date ID ProfID Name ProfID1 我想要实现的是: Date | Name ------------------------ June 1, 2016 | ProfName1 June 1, 2016 | ProfName2 当我使用Join时,

因此,我遇到一个表,它的设计如下:

t_Schedule          t_Prof
----------          ----------
Date                ID  
ProfID              Name
ProfID1
我想要实现的是:

Date         | Name
------------------------
June 1, 2016 | ProfName1
June 1, 2016 | ProfName2
当我使用Join时,我得到以下结果:

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

您可以使用UNPIVOT函数来实现这一点。下面将更详细地讨论答案:

stackoverflow.com/questions/18026236/sql server列到行

尝试以下查询:

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)

谢谢你。我想知道EXEC是否也能解决我的问题?