MySQL 中的分组日期和数据透视表
Group date and Pivot in MySQL
我无法满足我的 SQL 请求。
我想获取每天名为 MONTANT 的列和每个商店的编号的总和。
我的 SQL 请求是:
SELECT DATE AS 'JOUR', "1", "2", "3", "4", "5"
FROM ticket_reglement
UP PIVOT (SUM(MONTANT) FOR NUMERO_CAISSE IN ("1", "2", "3", "4", "5")) AS pvt
WHERE DATE BETWEEN '2015-12-07' AND '2015-12-13'
从 1 到 5 的数字是我要转换的商店编号。
此请求有效,但 'JOUR' 列(包含日期)每天包含多次。例如:
JOUR | 1 | 2 | 3 |
____________|_____|_____|_____|
07/12/2015 | 5 | 0 | 1 |
07/12/2015 | 3 | 2 | 0 |
08/12/2015 | 1 | 0 | 3 |
如何更改获取每天总和的请求? (一天一行)
我也想要 MySQL 的相同请求,但不幸的是 MySQL 不存在 UP PIVOT。我搜索了一些相关问题,但没有找到替代方法的真正答案。
感谢您的帮助。
SELECT *
FROM (
SELECT [DATE], MONTANT, NUMERO_CAISSE
FROM dbo.ticket_reglement
) t
PIVOT (
COUNT(MONTANT)
FOR NUMERO_CAISSE IN ([1], [2], [3], [4], [5])
) p
更新-
SELECT
`DATE`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 1 THEN 1 END) AS `1`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 2 THEN 1 END) AS `2`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 3 THEN 1 END) AS `3`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 4 THEN 1 END) AS `4`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 5 THEN 1 END) AS `5`
FROM ticket_reglement
GROUP BY `DATE`
我无法满足我的 SQL 请求。 我想获取每天名为 MONTANT 的列和每个商店的编号的总和。
我的 SQL 请求是:
SELECT DATE AS 'JOUR', "1", "2", "3", "4", "5"
FROM ticket_reglement
UP PIVOT (SUM(MONTANT) FOR NUMERO_CAISSE IN ("1", "2", "3", "4", "5")) AS pvt
WHERE DATE BETWEEN '2015-12-07' AND '2015-12-13'
从 1 到 5 的数字是我要转换的商店编号。 此请求有效,但 'JOUR' 列(包含日期)每天包含多次。例如:
JOUR | 1 | 2 | 3 |
____________|_____|_____|_____|
07/12/2015 | 5 | 0 | 1 |
07/12/2015 | 3 | 2 | 0 |
08/12/2015 | 1 | 0 | 3 |
如何更改获取每天总和的请求? (一天一行)
我也想要 MySQL 的相同请求,但不幸的是 MySQL 不存在 UP PIVOT。我搜索了一些相关问题,但没有找到替代方法的真正答案。
感谢您的帮助。
SELECT *
FROM (
SELECT [DATE], MONTANT, NUMERO_CAISSE
FROM dbo.ticket_reglement
) t
PIVOT (
COUNT(MONTANT)
FOR NUMERO_CAISSE IN ([1], [2], [3], [4], [5])
) p
更新-
SELECT
`DATE`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 1 THEN 1 END) AS `1`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 2 THEN 1 END) AS `2`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 3 THEN 1 END) AS `3`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 4 THEN 1 END) AS `4`
, COUNT(CASE WHEN `NUMERO_CAISSE` = 5 THEN 1 END) AS `5`
FROM ticket_reglement
GROUP BY `DATE`