我到处搜索,似乎无法找到解决方案.
现在我知道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语句.
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)
试试这个 -
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)
查询费用:

| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |