Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何对“中的数据进行分组和重新排列”;全行“;模式SQL_Mysql_Sql - Fatal编程技术网

Mysql 如何对“中的数据进行分组和重新排列”;全行“;模式SQL

Mysql 如何对“中的数据进行分组和重新排列”;全行“;模式SQL,mysql,sql,Mysql,Sql,我的SQL数据存储在“整行”中,需要重新排列 原始数据 ID User Date Act1 Act2 Act3 Act4 1 Aba 2019-04-27 3 1 NULL 2 2 Bob 2019-04-28 1 NULL 2 1 3 Carl 2019-04-28 2 1 1 2 4

我的SQL数据存储在“整行”中,需要重新排列
原始数据

ID      User    Date            Act1   Act2  Act3  Act4 
1       Aba     2019-04-27      3      1     NULL  2
2       Bob     2019-04-28      1      NULL  2     1
3       Carl    2019-04-28      2      1     1     2
4       Dan     2019-04-29      3      2     1     NULL
5       Aba     2019-04-29      4      7     5     NULL
所需状态(每天和行动)


感谢您的指导,您可以尝试使用带有病情加重功能的
UNION ALL

查询1

SELECT 'Act1' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act1 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act1 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act1 END) '2019-04-29'
FROM T
UNION ALL
SELECT 'Act2' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act2 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act2 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act2 END) '2019-04-29'
FROM T
UNION ALL
SELECT 'Act3' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act3 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act3 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act3 END) '2019-04-29'
FROM T
UNION ALL
SELECT 'Act4' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act4 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act4 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act4 END) '2019-04-29'
FROM T
|   Id | 2019-04-27 | 2019-04-28 | 2019-04-29 |
|------|------------|------------|------------|
| Act1 |          3 |          3 |          7 |
| Act2 |          1 |          1 |          9 |
| Act3 |     (null) |          3 |          6 |
| Act4 |          2 |          3 |     (null) |

SELECT 'Act1' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act1 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act1 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act1 END) '2019-04-29'
FROM T
UNION ALL
SELECT 'Act2' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act2 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act2 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act2 END) '2019-04-29'
FROM T
UNION ALL
SELECT 'Act3' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act3 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act3 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act3 END) '2019-04-29'
FROM T
UNION ALL
SELECT 'Act4' Id,
       SUM(CASE WHEN Date = DATE'2019-04-27' THEN Act4 END) '2019-04-27',
       SUM(CASE WHEN Date = DATE'2019-04-28' THEN Act4 END) '2019-04-28',
       SUM(CASE WHEN Date = DATE'2019-04-29' THEN Act4 END) '2019-04-29'
FROM T
|   Id | 2019-04-27 | 2019-04-28 | 2019-04-29 |
|------|------------|------------|------------|
| Act1 |          3 |          3 |          7 |
| Act2 |          1 |          1 |          9 |
| Act3 |     (null) |          3 |          6 |
| Act4 |          2 |          3 |     (null) |

我不得不调整它以适应数据,花了一点时间,但这是做的工作,谢谢!