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

时间:2014-04-26 22:12:29

标签: 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.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

2 个答案:

答案 0 :(得分:2)

我不确定这是你所需要的,但也许它可以帮到你。

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

答案 1 :(得分:1)

根据您问题的修改版本中的查询,您可以在加入条件中使用orin执行您想要的操作:

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;

这是正确的查询

相关问题