php - 合并查询.. PIVOT 不起作用

标签 php mysql sql

我的查询有问题。我现在有 2 个查询并且工作正常。但是当我想用 PIVOT 添加另一个查询时,它不起作用。我已经尝试了很多东西,但没有任何效果..

这是我的前两个查询

$query = "SET SQL_BIG_SELECTS = 1;";
$query .= "SELECT * FROM datakram, datakram2, datakram3 WHERE datakram.NAME = datakram2.NAME AND datakram2.NAME = datakram3.NAME"

我想为表“datakram4”添加一个 PIVOT。但我只想要 NAME 等于其他表中 NAME 的行。没有 PIVOT 它就可以工作..

我的 PIVOT 代码。

SELECT  `name` ,
 MAX( CASE WHEN  `year` =2017 THEN  `income` ELSE 0 END ) AS INCOME_2017,
 MAX( CASE WHEN  `year` =2017 THEN  `expense` ELSE 0 END ) AS EXPENSE_2017,
 MAX( CASE WHEN  `year` =2016 THEN  `income` ELSE 0 END ) AS INCOME_2016,
 MAX( CASE WHEN  `year` =2016  THEN  `expense` ELSE 0 END ) AS EXPENSE_2016
 FROM  `test_data` GROUP BY  `name` 

我的 php 脚本使用 multi_query。

最佳答案

简单地加入查询:

SELECT d4.* 
FROM datakram d1
INNER JOIN datakram2 d2
  ON d1.`NAME` = d2.`NAME`
INNER JOIN datakram3 d3 
  ON d2.`NAME` = d3.`NAME`
INNER JOIN
   (SELECT `name` ,
      MAX(CASE WHEN `year`=2017 THEN `income` ELSE 0 END) AS INCOME_2017,
      MAX(CASE WHEN `year`=2017 THEN `expense` ELSE 0 END) AS EXPENSE_2017,
      MAX(CASE WHEN `year`=2016 THEN `income` ELSE 0 END) AS INCOME_2016,
      MAX(CASE WHEN `year`=2016 THEN `expense` ELSE 0 END) AS EXPENSE_2016
    FROM `test_data` 
    GROUP BY `name`
   ) d4
  ON d3.`NAME` = d4.`name`

关于php - 合并查询.. PIVOT 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664947/

相关文章:

php - 为什么 MySQL ZIP 存档中没有 my-default.ini?

php - 根据 MYSQL 值更改单元格颜色

mysql - MySQL类型转换规则

mysql - 在 MYSQL 中加入具有 SUM 问题的表

sql - Hive 填充前导零

php - 通过 PHP 连接到权限较低的 MySQL 用户

php - 函数中的静态变量是否初始化为NULL(手动)?

javascript - 在此服务器上未找到所请求的 - 表单验证(Apache/2.4.9 (Win32) PHP/5.5.12 服务器在本地主机端口 80)

sql - mysql在同一表的UPDATE中嵌套SELECT

sql - SQL 的哪些实现具有类似 PSM 的功能?