-- 会员表 CREATE TABLE T_MEMBER ( MEMBER_ID CHAR(02) PRIMARY KEY, MEMBER_NAME VARCHAR(20) ) -- 商品表 CREATE TABLE T_PRODUCT ( PRODUCT_ID CHAR(02) PRIMARY KEY, PRODUCT_NAME VARCHAR(20) ) -- 订单表 CREATE TABLE T_ORDER ( ORDER_ID INT PRIMARY KEY, MEMBER_ID CHAR(02), PRODUCT_ID CHAR(02), QTY INT ) -- 插入会员信息 INSERT INTO T_MEMBER VALUES ('M1', '张一') INSERT INTO T_MEMBER VALUES ('M2', '张二') INSERT INTO T_MEMBER VALUES ('M3', '张三') INSERT INTO T_MEMBER VALUES ('M4', '张四') INSERT INTO T_MEMBER VALUES ('M5', '张五') -- 插入商品信息 INSERT INTO T_PRODUCT VALUES ('P1', '自行车') INSERT INTO T_PRODUCT VALUES ('P2', '相机') INSERT INTO T_PRODUCT VALUES ('P3', '笔记本') -- 插入订单信息 INSERT INTO T_ORDER VALUES (1, 'M1', 'P1', 1) INSERT INTO T_ORDER VALUES (2, 'M2', 'P2', 2) INSERT INTO T_ORDER VALUES (3, 'M3', 'P1', 1) INSERT INTO T_ORDER VALUES (4, 'M3', 'P1', 1) INSERT INTO T_ORDER VALUES (5, 'M2', 'P3', 1) INSERT INTO T_ORDER VALUES (6, 'M1', 'P2', 3) INSERT INTO T_ORDER VALUES (7, 'M3', 'P1', 1) INSERT INTO T_ORDER VALUES (8, 'M1', 'P1', 2) INSERT INTO T_ORDER VALUES (9, 'M2', 'P3', 1) INSERT INTO T_ORDER VALUES (10, 'M1', 'P2', 1) GO -- 会员 + 商品 统计 SELECT T2.MEMBER_NAME 会员名称, T3.PRODUCT_NAME 商品名称, SUM(T1.QTY) 数量 FROM T_ORDER T1 INNER JOIN T_MEMBER T2 ON T1.MEMBER_ID = T2.MEMBER_ID INNER JOIN T_PRODUCT T3 ON T1.PRODUCT_ID = T3.PRODUCT_ID GROUP BY T2.MEMBER_NAME, T3.PRODUCT_NAME
-- 会员 + 商品种类(行转列) 统计 -- 商品名称字段中的值转换成字段名称 SELECT * FROM ( SELECT T2.MEMBER_NAME 会员名称, T3.PRODUCT_NAME 商品名称, SUM(T1.QTY) 数量 FROM T_ORDER T1 INNER JOIN T_MEMBER T2 ON T1.MEMBER_ID = T2.MEMBER_ID INNER JOIN T_PRODUCT T3 ON T1.PRODUCT_ID = T3.PRODUCT_ID GROUP BY T2.MEMBER_NAME, T3.PRODUCT_NAME) T PIVOT (SUM(数量) FOR 商品名称 IN([笔记本], [相机], [自行车])) AS PVT