我有一个表BPFinal,并具有以下列
ID | Partners | Branch | Amount | Date
1001 | ABC | BO1 | 2,000 | 2020/11/30
1001 | ABC | BO2 | 1,500 | 2020/11/30
1002 | XYZ | BO1 | 4,000 | 2020/11/30
1001 | ABC | BO1 | 5,000 | 2020/10/31
我正在尝试编写sql,以使用合作伙伴的动态标题创建数据透视表。设置日期后,每个分支将仅显示可用的合作伙伴及其对应的数据。输出应如下所示:
日期:2020/11/30
Branches | ABC | XYZ
BO1 | 2,000 | 4,000
BO2 | 1,500 | 0.00
日期:2020/10/31
Branches | ABC
BO1 | 5,000
编写SQL的任何帮助将不胜感激。谢谢
你可以使用动态SQL来进行动态透视,例如
SET @sql = NULL;
SET @date = '2020-11-30';
SELECT GROUP_CONCAT(
CONCAT(
'SUM(CASE WHEN Partners = "', Partners,'" THEN Amount ELSE 0 END ) AS'
,Partners
)
)
INTO @sql
FROM ( SELECT DISTINCT Partners FROM BPFinal WHERE Date = @date ) AS b;
SET @sql = CONCAT('SELECT Branch,',@sql,
' FROM BPFinal
WHERE Date = "',@date,'"'
' GROUP BY Branch');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
您是否在MySQL中使用了一些查询来做一些枢轴操作?
非常感谢你的帮助
不客气@AskWarvin