1

我试图弄清楚如何将此交叉表查询转换为 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 查询。

4

1 回答 1

0

MySQL 没有数据透视函数,但可以使用带有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'等替换您的实际值。您还需要将要在WHERE子句中过滤的月份传递到此查询中。

于 2013-02-12T10:26:40.323 回答