使用 SQL Server 从两个结果中生成 1 行结果

问题描述 投票:0回答:1

使用 SQL Server,是否可以从两行创建一行结果?请参阅以下内容:

样本数据:

+-----+-----------+----------------+------------+---------------------+
| PC  | DriveName | AvailableSpace | TotalSpace |    PostingDtime     |
+-----+-----------+----------------+------------+---------------------+
| 111 | C:\       | 241 GB         | 405 GB     | 03/01/2024 23:00:00 |
| 111 | D:\       | 507 GB         | 546 GB     | 03/01/2024 23:00:00 |
| 111 | C:\       | 241 GB         | 405 GB     | 03/01/2024 0:00:00  |
| 111 | D:\       | 507 GB         | 546 GB     | 03/01/2024 0:00:00  |

期望的结果

+-----+-----------+----------------+------------+-----------+
| PC  | DriveName | AvailableSpace | TotalSpace | DriveName |
+-----+-----------+----------------+------------+-----------+
| 111 | C:\       | 241 GB         | 405 GB     | D:\       |
| 111 | C:\       | 241 GB         | 405 GB     | D:\       |
+-----+-----------+----------------+------------+-----------+

我尝试使用枢轴和交叉连接表作为网络上的建议,但我也无法从网络上看到类似的答案。

sql sql-server join sql-server-2012
1个回答
0
投票

您可以通过在 PC 和

PostingDTime
上加入来自加入以获得这些结果,然后限制您要查找的驱动器的每个表别名。另外,我猜测还需要更多列,并且在转录数据的原始屏幕截图中被截断。

SELECT t1.PC, t1.DriveName, t1.AvailableSpace, t1.TotalSpace, t2.DriveName, t2.AvailableSpace, t2.TotalSpace
FROM yourtable as t1
    LEFT OUTER JOIN yourtable as t2
        ON t1.PC = t2.PC
        AND t1.PostingDtime = t2.PostingDTime
        AND t2.Drive = 'D:\'
WHERE t1.Drive = 'C:\'
© www.soinside.com 2019 - 2024. All rights reserved.