SELECT
t4.a as a ,
IFNULL(SUM( CASE WHEN t4.DAY = '01' THEN COUNT END ),0) AS first,
IFNULL(SUM( CASE WHEN t4.DAY = '02' THEN COUNT END ),0) AS second,
IFNULL(SUM( CASE WHEN t4.DAY = '03' THEN COUNT END ),0) AS third,
IFNULL(SUM( CASE WHEN t4.DAY = '04' THEN COUNT END ),0) AS fourth,
IFNULL(SUM( CASE WHEN t4.DAY = '05' THEN COUNT END ),0) AS fifth,
IFNULL(SUM( CASE WHEN t4.DAY = '06' THEN COUNT END ),0) AS sixth,
IFNULL(SUM( CASE WHEN t4.DAY = '07' THEN COUNT END ),0) AS seventh,
IFNULL(SUM( CASE WHEN t4.DAY = '08' THEN COUNT END ),0) AS eighth,
IFNULL(SUM( CASE WHEN t4.DAY = '09' THEN COUNT END ),0) AS ninth,
IFNULL(SUM( CASE WHEN t4.DAY = '10' THEN COUNT END ),0) AS tenth,
IFNULL(SUM( CASE WHEN t4.DAY = '11' THEN COUNT END ),0) AS eleventh,
IFNULL(SUM( CASE WHEN t4.DAY = '12' THEN COUNT END ),0) AS twelfth,
IFNULL(SUM( CASE WHEN t4.DAY = '13' THEN COUNT END ),0) AS thirteenth,
IFNULL(SUM( CASE WHEN t4.DAY = '14' THEN COUNT END ),0) AS fourteenth,
IFNULL(SUM( CASE WHEN t4.DAY = '15' THEN COUNT END ),0) AS fifteenth,
IFNULL(SUM( CASE WHEN t4.DAY = '16' THEN COUNT END ),0) AS sixteenth,
IFNULL(SUM( CASE WHEN t4.DAY = '17' THEN COUNT END ),0) AS seventeenth,
IFNULL(SUM( CASE WHEN t4.DAY = '18' THEN COUNT END ),0) AS eighteenth,
IFNULL(SUM( CASE WHEN t4.DAY = '19' THEN COUNT END ),0) AS nineteenth,
IFNULL(SUM( CASE WHEN t4.DAY = '20' THEN COUNT END ),0) AS twentieth,
IFNULL(SUM( CASE WHEN t4.DAY = '21' THEN COUNT END ),0) AS twentyFirst,
IFNULL(SUM( CASE WHEN t4.DAY = '22' THEN COUNT END ),0) AS twentySecond,
IFNULL(SUM( CASE WHEN t4.DAY = '23' THEN COUNT END ),0) AS twentyThird,
IFNULL(SUM( CASE WHEN t4.DAY = '24' THEN COUNT END ),0) AS twentyFourth,
IFNULL(SUM( CASE WHEN t4.DAY = '25' THEN COUNT END ),0) AS twentyFifth,
IFNULL(SUM( CASE WHEN t4.DAY = '26' THEN COUNT END ),0) AS twentySixth,
IFNULL(SUM( CASE WHEN t4.DAY = '27' THEN COUNT END ),0) AS twentySeventh,
IFNULL(SUM( CASE WHEN t4.DAY = '28' THEN COUNT END ),0) AS twentyEighth,
IFNULL(SUM( CASE WHEN t4.DAY = '29' THEN COUNT END ),0) AS twentyNinth,
IFNULL(SUM( CASE WHEN t4.DAY = '30' THEN COUNT END ),0) AS thirty,
IFNULL(SUM( CASE WHEN t4.DAY = '31' THEN COUNT END ),0) AS thirtyFirst
FROM
(
SELECT
t3.date,
SUBSTR(
t3.date
FROM
LENGTH( t3.date )- 1 FOR LENGTH( t3.date )) AS DAY,
t2.a,
t2.b,
t2.COUNT
FROM
(
SELECT
@date := DATE_ADD( @date, INTERVAL + 1 DAY ) AS date
FROM
( SELECT @date := DATE_ADD( '2021-11-15', INTERVAL - 1 DAY ) FROM test01 LIMIT 31 ) time
) t3
LEFT JOIN (
SELECT
DATE_FORMAT( t1.CREATE_TIME, '%Y-%m-%d' ) AS createTime,
t1.a AS a,
t1.b AS b,
COUNT(*) AS COUNT
FROM
test01 t1
LEFT JOIN test02 t6 ON t1.DEMAND_ORDER_NUM =t6.DEMAND_ORDER_NUM
WHERE 1=1
GROUP BY
DATE_FORMAT( t1.CREATE_TIME, '%Y-%m-%d' ),
t1.PRODUCT_NUM
) t2 ON t3.date = t2.createTime
) t4
WHERE t4.PRODUCT_NAME is not null
GROUP BY
t4.PRODUCT_NAME
有更好的方法 希望老铁们附个链接