是否可以将行转换为列,并找到每个客户的笔记本电脑和台式机的金额总和,并将其存储在笔记本电脑和台式机的单独列中,而不使用pivot函数
表创建:
CREATE TABLE Customers
(
CustomerName VARCHAR(50),
ProductName VARCHAR(50),
Amount INT
);
INSERT INTO Customers VALUES('James', 'Laptop', 30000);
INSERT INTO Customers VALUES('James', 'Desktop', 25000);
INSERT INTO Customers VALUES('David', 'Laptop', 25000);
INSERT INTO Customers VALUES('Smith', 'Desktop', 30000);
INSERT INTO Customers VALUES('Pam', 'Laptop', 45000);
INSERT INTO Customers VALUES('Pam', 'Laptop', 30000);
INSERT INTO Customers VALUES('John', 'Desktop', 30000);
INSERT INTO Customers VALUES('John', 'Desktop', 30000);
INSERT INTO Customers VALUES('John', 'Laptop', 30000);客户输出:
CustomerName ProductName Amount
James Laptop 30000
James Desktop 25000
David Laptop 25000
Smith Desktop 30000
Pam Laptop 45000
Pam Laptop 30000
John Desktop 30000
John Desktop 30000
John Laptop 30000所需输出:
CustomerName Laptop Desktop
David 25000 null
James 30000 25000
John 30000 60000
Pam 75000 null
Smith null 30000发布于 2021-11-12 23:29:34
对于已知的ProductName值,它可以使用CASE WHEN进行查询
SELECT CustomerName,
SUM(CASE WHEN ProductName = 'Laptop' THEN Amount ELSE 0 END) Laptop,
SUM(CASE WHEN ProductName = 'Desktop' THEN Amount ELSE 0 END) Desktop
FROM Customers
GROUP BY CustomerNamehttps://stackoverflow.com/questions/69950067
复制相似问题