将Access Pivot查询转换为Mysql
我试图弄清楚如何将这个交叉表查询转换为mysql中的等价查询。任何帮助都将不胜感激将Access Pivot查询转换为Mysql,mysql,pivot,crosstab,Mysql,Pivot,Crosstab,我试图弄清楚如何将这个交叉表查询转换为mysql中的等价查询。任何帮助都将不胜感激 TRANSFORM Sum(QryMainCrosstab.Bene_Act) AS SumOfBene_Act SELECT QryMainCrosstab.DistrictCode, QryMainCrosstab.District_Name AS District FROM QryMainCrosstab WHERE (((QryMainCrosstab.Month)=[Forms]![frmRespons
TRANSFORM Sum(QryMainCrosstab.Bene_Act) AS SumOfBene_Act
SELECT QryMainCrosstab.DistrictCode, QryMainCrosstab.District_Name AS District
FROM QryMainCrosstab
WHERE (((QryMainCrosstab.Month)=[Forms]![frmResponseReport]![txtMonth]))
GROUP BY QryMainCrosstab.DistrictCode, QryMainCrosstab.District_Name
PIVOT QryMainCrosstab.StrategicResponse;
QryMainCrossTab是另一个sql查询 MySQL没有pivot函数,但可以使用带有CASE
表达式的聚合函数来复制它
该代码类似于以下代码:
SELECT q.DistrictCode,
q.District_Name AS District,
sum(case when q.StrategicResponse = 'yourResponse1' then q. Bene_Act end) SumResponse1,
sum(case when q.StrategicResponse = 'yourResponse2' then q. Bene_Act end) SumResponse2,
sum(case when q.StrategicResponse = 'yourResponse3' then q. Bene_Act end) SumResponse3,
sum(case when q.StrategicResponse = 'yourResponse4' then q. Bene_Act end) SumResponse4
FROM QryMainCrosstab q
WHERE q.Month = yourValue
GROUP BY q.DistrictCode, q.District_Name
您将用每个'yourResponse1'
等替换策略应答的实际值。您还需要在WHERE
子句中将要筛选的月份传递到此查询中