多个select语句合二为一,创建新列

LjC*_*ode 3 sql sql-server

我到处搜索,似乎无法找到解决方案.

现在我知道UNION的功能,但我不确定它是否在这里正确使用.这是我的查询:

  SELECT pos.pdPosition AS [Region 1]  
  FROM PositionData pos 
  WHERE pos.PositionId = 1765
  UNION ALL 
  SELECT pos.pdPosition AS [Region 2] 
  FROM PositionData pos 
  WHERE pos.PositionId = 1767
Run Code Online (Sandbox Code Playgroud)

我想要的是它创建新列,区域1包含数字1的数据和区域2包含数字2的数据.

我得到的是这个:

在此输入图像描述

我该如何拆分/我可以使用什么声明?

注意:这必须是一个select语句.

bum*_*mmi 8

Select 
    (SELECT pos.pdPosition 
     FROM PositionData pos 
     WHERE pos.PositionId = 1765) AS [Region 1]
   ,(SELECT pos.pdPosition 
     FROM PositionData pos 
     WHERE pos.PositionId = 1767) AS [Region 2]
Run Code Online (Sandbox Code Playgroud)


Dev*_*art 6

试试这个 -

DDL:

DECLARE @PositionData TABLE (PositionId INT, pdPosition INT)
INSERT INTO @PositionData (PositionId, pdPosition)
VALUES (1765, 1765),(1767, 1767), (1768, 1768)
Run Code Online (Sandbox Code Playgroud)

我的查询:

SELECT
      [Region 1] = MIN(CASE WHEN PositionId = 1765 THEN pdPosition END)
    , [Region 2] = MIN(CASE WHEN PositionId = 1767 THEN pdPosition END) 
FROM @PositionData
WHERE PositionId IN (1767, 1765)
Run Code Online (Sandbox Code Playgroud)

bummi查询:

SELECT 
    (SELECT pdPosition 
     FROM @PositionData 
     WHERE PositionId = 1765) AS [Region 1]
   ,(SELECT pdPosition 
     FROM @PositionData 
     WHERE PositionId = 1767) AS [Region 2]
Run Code Online (Sandbox Code Playgroud)

输出:

Region 1    Region 2
----------- -----------
1765        1767

(1 row(s) affected)

Region 1    Region 2
----------- -----------
1765        1767

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

查询费用:

成本