gpt4 book ai didi

sql - 如何使用空值进行 SQL 自连接

转载 作者:行者123 更新时间:2023-12-04 23:42:45 25 4
gpt4 key购买 nike

我正在使用 MS SQL 2008。我的表如下所示:

| Name  | Code | Amt  |
| ----- | ---- | ---- |
| April | A | 1.23 |
| Barry | A | 2.34 |
| Barry | B | 3.45 |
| Cliff | A | 4.56 |
| Cliff | B | 5.67 |
| Cliff | C | 6.78 |

我需要这样的输出:

| Name  | Code_A | Code_B | Code_C |
| ----- | ------ | ------ | ------ |
| April | 1.23 | NULL | NULL |
| Barry | 2.34 | 3.45 | NULL |
| Cliff | 4.56 | 5.67 | 6.78 |

NULL 可以为零。

通过自连接,我可以获得 Cliff,但无法获得 Barry 和 April,因为我使用的是类似这样的东西,它只有在所有三个条件都可用时才会输出。

SELECT     a.Name, a.Amt Code_A, b.Amt Code_B, c.Amt Code_C
FROM Table_1 as c INNER JOIN
Table_1 AS b ON c.Name = b.Name INNER JOIN
Table_1 AS a ON b.Name = a.Name
WHERE (a.Code = 'A') AND (b.Code = 'B') AND (c.Code = 'C')

最佳答案

我认为不是JOIN,而是PIVOT在这里更合适:

SELECT 
Name,
[A] AS Code_A,
[B] AS Code_B,
[C] AS Code_C
FROM (
SELECT Name, Code, Amount
FROM Table_1
) t
PIVOT (
SUM(Amount)
FOR Code IN ([A], [B], [C])
) AS pvt

关于sql - 如何使用空值进行 SQL 自连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10319788/

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