3

我到处搜索,似乎找不到解决方案。

现在我知道了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

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

我得到的是:

在此处输入图像描述

我该如何拆分它/我可以使用什么语句?

注意:这必须是一个选择语句。

4

2 回答 2

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]
于 2013-07-29T11:12:53.490 回答
6

试试这个——

DDL:

DECLARE @PositionData TABLE (PositionId INT, pdPosition INT)
INSERT INTO @PositionData (PositionId, pdPosition)
VALUES (1765, 1765),(1767, 1767), (1768, 1768)

我的查询:

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)

布米查询:

SELECT 
    (SELECT pdPosition 
     FROM @PositionData 
     WHERE PositionId = 1765) AS [Region 1]
   ,(SELECT pdPosition 
     FROM @PositionData 
     WHERE PositionId = 1767) AS [Region 2]

输出:

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

(1 row(s) affected)

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

(1 row(s) affected)

查询费用:

成本

于 2013-07-29T11:12:22.507 回答