SQL Server 2008查询1行日期转换为列

SQL Server 2008查询1行日期转换为列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的问题是 SELECT UB.UnitID as UnitID, UB.Name as Unit, US.UnitID as UnitID, US.Name as Unit, UP.UnitID as UnitID, UP.Name as Unit FROM Product PR INNER JOIN Unit UB on UB.UnitID = PR.BaseUnitID INNER JOIN Unit US on US.UnitID = PR.Seco

我的问题是

SELECT 
   UB.UnitID as UnitID, UB.Name as Unit, US.UnitID as UnitID, US.Name as Unit,
   UP.UnitID as UnitID, UP.Name as Unit
FROM 
   Product PR 
INNER JOIN
   Unit UB on UB.UnitID = PR.BaseUnitID 
INNER JOIN
   Unit US on US.UnitID = PR.SecondaryUnitID 
INNER JOIN
   Unit UP on P.UnitID = PR.PrimaryUnitID 
where 
   Productid = 1
输出:

BaseUnitID   BaseUnit   SecondaryUnitID    SecondaryUnit   PrimaryUnitID   PrimaryUnit
----------   -------    ----------------   ------------   -------------   ------------
     1       PCS               2           CTN                   3         TRAY
SQL查询转换为此表单

UnitID    Unit
------    ----
  1       PCS
  2       CTN
  3       TRAY

我不确定这是否是你所需要的,但也许它能帮助你

SELECT BaseUnitID UnitID, BaseUnit Unit FROM tbl UNION ALL
SELECT SecondaryUnitID, SecondaryUnit FROM tbl UNION ALL
SELECT PrimaryUnitID, PrimaryUnit FROM tbl

我不确定这是否是你所需要的,但也许它能帮助你

SELECT BaseUnitID UnitID, BaseUnit Unit FROM tbl UNION ALL
SELECT SecondaryUnitID, SecondaryUnit FROM tbl UNION ALL
SELECT PrimaryUnitID, PrimaryUnit FROM tbl

给定问题编辑版本中的查询,您可以在联接条件中使用
中的
执行所需操作:

SELECT U.UnitID as UnitID, U.Name as Unit
FROM Product PR inner join
     Unit U
     on U.UnitID in (PR.BaseUnitID, PR.SecondaryUnitID, PR.PrimaryUnitID)
where Productid = 1;

这是正确的查询

如果问题的编辑版本中有查询,您可以在联接条件中使用
中的
执行所需操作:

SELECT U.UnitID as UnitID, U.Name as Unit
FROM Product PR inner join
     Unit U
     on U.UnitID in (PR.BaseUnitID, PR.SecondaryUnitID, PR.PrimaryUnitID)
where Productid = 1;

这是正确的查询

欢迎使用堆栈溢出。请提供迄今为止您尝试过的内容。欢迎使用堆栈溢出。请提供您迄今为止尝试过的内容。+1。但我认为总是将
用作列别名是个好主意。我的查询是------选择UB.UnitID作为UnitID,UB.Name作为Unit,US.UnitID作为UnitID,US.Name作为UnitID,UP.UnitID作为UnitID,UP.Name作为单位从产品PR内部连接单位UB到UB.UnitID=PR.BaseUnitID内部连接单位US到US.UnitID=PR.SecondaryUnitID内部连接单位UP到UP.UnitID=PR.PrimaryUnitID+1。但我认为总是将
用作列别名是个好主意。我的查询是------选择UB.UnitID作为UnitID,UB.Name作为Unit,US.UnitID作为UnitID,US.Name作为UnitID,UP.UnitID作为UnitID,UP.Name as Unit来自产品PR内部连接单元UB on UB.UnitID=PR.BaseUnitID内部连接单元US on US.UnitID=PR.SecondaryUnitID内部连接单元UP on UP.UnitID=PR.PrimaryUnitID