使用一列不同行中的值作为不同列中的值,但只有一行
Use values in different rows of a column as values in different columns but only one row
是否可以对行进行分组并将每一行的一个值用于不同的自定义列?
原文table:
ID Tax Amount
--------------------------
1 21% 33,40
1 10% 15,30
1 4% 1,32
2 21% 12,43
2 10% 4,20
想要table:
ID Tax 21% Tax 10% Tax 4%
--------------------------------------
1 33,40 15,30 1,32
2 12,43 4,20 0,00
你会怎么做?
提前致谢。
您可以尝试使用条件聚合函数,MAX
和 CASE WHEN
CREATE TABLE T(
ID INT,
Tax VARCHAR(50),
Amount FLOAT
);
INSERT INTO T VALUES (1,'21%',33.40);
INSERT INTO T VALUES (1,'10%',15.30);
INSERT INTO T VALUES (1,'4%',1.32);
INSERT INTO T VALUES (2,'21%',12.43);
INSERT INTO T VALUES (2,'10%',4.20);
查询 1:
SELECT ID,
MAX(CASE WHEN Tax = '21%' THEN Amount ELSE 0 END) "Tax 21%",
MAX(CASE WHEN Tax = '10%' THEN Amount ELSE 0 END) "Tax 10%",
MAX(CASE WHEN Tax = '4%' THEN Amount ELSE 0 END) "Tax 4%"
FROM T
GROUP BY ID
| id | Tax 21% | Tax 10% | Tax 4% |
|----|---------|---------|--------|
| 1 | 33.4 | 15.3 | 1.32 |
| 2 | 12.43 | 4.2 | 0 |
您可以使用聚合函数 sum()
SELECT ID,
sum(CASE WHEN Tax = '21%' THEN Amount ELSE 0 END) "Tax 21%",
sum(CASE WHEN Tax = '10%' THEN Amount ELSE 0 END) "Tax 10%",
sum(CASE WHEN Tax = '4%' THEN Amount ELSE 0 END) "Tax 4%"
FROM T
GROUP BY ID
id Tax 21% Tax 10% Tax 4%
1 33.4 15.3 1.32
2 12.43 4.2 0
是否可以对行进行分组并将每一行的一个值用于不同的自定义列?
原文table:
ID Tax Amount
--------------------------
1 21% 33,40
1 10% 15,30
1 4% 1,32
2 21% 12,43
2 10% 4,20
想要table:
ID Tax 21% Tax 10% Tax 4%
--------------------------------------
1 33,40 15,30 1,32
2 12,43 4,20 0,00
你会怎么做? 提前致谢。
您可以尝试使用条件聚合函数,MAX
和 CASE WHEN
CREATE TABLE T(
ID INT,
Tax VARCHAR(50),
Amount FLOAT
);
INSERT INTO T VALUES (1,'21%',33.40);
INSERT INTO T VALUES (1,'10%',15.30);
INSERT INTO T VALUES (1,'4%',1.32);
INSERT INTO T VALUES (2,'21%',12.43);
INSERT INTO T VALUES (2,'10%',4.20);
查询 1:
SELECT ID,
MAX(CASE WHEN Tax = '21%' THEN Amount ELSE 0 END) "Tax 21%",
MAX(CASE WHEN Tax = '10%' THEN Amount ELSE 0 END) "Tax 10%",
MAX(CASE WHEN Tax = '4%' THEN Amount ELSE 0 END) "Tax 4%"
FROM T
GROUP BY ID
| id | Tax 21% | Tax 10% | Tax 4% |
|----|---------|---------|--------|
| 1 | 33.4 | 15.3 | 1.32 |
| 2 | 12.43 | 4.2 | 0 |
您可以使用聚合函数 sum()
SELECT ID,
sum(CASE WHEN Tax = '21%' THEN Amount ELSE 0 END) "Tax 21%",
sum(CASE WHEN Tax = '10%' THEN Amount ELSE 0 END) "Tax 10%",
sum(CASE WHEN Tax = '4%' THEN Amount ELSE 0 END) "Tax 4%"
FROM T
GROUP BY ID
id Tax 21% Tax 10% Tax 4%
1 33.4 15.3 1.32
2 12.43 4.2 0