我试图找出如何将此交叉表查询转换为其在mysql中的等效项。任何帮助都将受到高度赞赏。
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查询。
答案 0 :(得分:0)
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
您可以使用StrategicResponse
等替换'yourResponse1'
的实际值。您还需要将要在{{1中过滤的月份 - 传递给此查询}。clause。