将Access Pivot查询转换为Mysql

时间:2013-02-12 07:56:12

标签: 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]![frmResponseReport]![txtMonth]))
GROUP BY QryMainCrosstab.DistrictCode, QryMainCrosstab.District_Name
PIVOT QryMainCrosstab.StrategicResponse;

QryMainCrossTab是另一个SQL查询。

1 个答案:

答案 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。