gpt4 book ai didi

sql - 如何构建一个将行选择为 SQL 列的查询?

转载 作者:行者123 更新时间:2023-12-05 00:10:41 26 4
gpt4 key购买 nike

如何在 SQL Server 中编写一个查询,为每个唯一 ID 的每个变量返回一列?下面是我想要完成的任务的简化示例。你能指出我正确的方向吗?

Table_Exists

ID    |    LOCATION    |    STATUS
__________________________________
001 | top | 3
001 | mid | 1
001 | bot | 4
002 | top | 2
002 | mid | 2
002 | bot | 1
003 | top | 1
003 | mid | 4
003 | bot | 2

这是我正在尝试的简化示例,显然没有成功。下面的代码会因“=”周围的语法不正确而返回错误消息:

SELECT  
ID,
LOCATION = top AS Top,
LOCATION = mid AS Middle,
LOCATION = bot AS Bottom
FROM
Table_Exists

我试图构建:

Table_Desired

ID | Top | Middle | Bottom 
__________________________
001| 3 | 1 | 4
002| 4 | 2 | 2
003| 1 | 4 | 2

最佳答案

您可以使用自连接(只要您的 LOCATIONNOT NULL 并且它包含所有 top/mid/bot 值):

 SELECT t1.ID, t1.Status AS Top, t2.Status AS Middle, t3.Status AS Bottom
FROM Table_Exists t1
JOIN Table_Exists t2
ON t1.ID = t2.ID
AND t1.LOCATION = 'top'
AND t2.Location = 'mid'
JOIN Table_Exists t3
ON t1.ID = t3.ID
AND t1.LOCATION = 'top'
AND t3.Location = 'bot';

LiveDemo

要获得更通用的解决方案,请使用PIVOT:

SELECT
[ID]
,[Top] = [top]
,[Middle] = [mid]
,[Bottom] = [bot]
FROM #Table_Exists t
PIVOT (
MAX(STATUS) FOR LOCATION IN ([top],[mid],[bot])
) AS Piv

LiveDemo2

关于sql - 如何构建一个将行选择为 SQL 列的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com