Mysql 如何对“中的数据进行分组和重新排列”;全行“;模式SQL
我的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
原始数据
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) |
我不得不调整它以适应数据,花了一点时间,但这是做的工作,谢谢!