Выберите 2 столбца с различными условиями - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно создать запрос, который даст мне завершенную и неоплаченную транзакцию в 2019 году, сгруппированную еженедельно. Я уже создал запрос для генерации завершенной транзакции, но застрял при попытке объединить запрос неоплаченной транзакции в завершенный запрос транзакции

Это запрос для завершенной транзакции

SELECT WEEK(A.plat_create_time, 1) AS 'Week Create Time',
       COUNT(t1.lp_sign_time) AS 'Completed Order'
FROM deli_order A
LEFT JOIN
(
    SELECT order_code, code, lp_sign_time
    FROM pg_send_package 
    UNION
    SELECT D.order_code, D.oms_code, C.cm_sign_time
    FROM pg_package C
    INNER JOIN pg_order D ON C.pg_order_id = D.id
) t1 ON t1.order_code = A.order_code
        AND t1.code = A.code
        AND YEAR(A.plat_create_time) = 2019
WHERE (YEAR(A.plat_create_time) = 2019) AND A.status = 6 AND t1.lp_sign_time IS NOT NULL
GROUP BY WEEK(A.plat_create_time, 1);   

И его генерировать что-то вроде этого

Week | Completed Order
1         886
2         734
3         868
4         1000

И это запрос, который я уже пытаюсь сгенерировать как завершенную, так и неоплаченную транзакцию.

SELECT WEEK(A.plat_create_time, 1) AS 'Week Create Time',
       COUNT(t1.lp_sign_time) AS 'Completed Order',
       COUNT(t2.plat_create_time) AS 'Unpaid Order'
FROM deli_order A
LEFT JOIN
(
    SELECT order_code, code, lp_sign_time
    FROM pg_send_package 
    UNION
    SELECT D.order_code, D.oms_code, C.cm_sign_time
    FROM pg_package C
    INNER JOIN pg_order D ON C.pg_order_id = D.id
) t1 ON t1.order_code = A.order_code
        AND t1.code = A.code
        AND YEAR(A.plat_create_time) = 2019
LEFT JOIN
(   
    SELECT order_code, WEEK(plat_create_time,1) AS 'Create Time'
    FROM deli_order
    WHERE pay_state = 0 AND (YEAR(plat_create_time) = 2019)
) t2 ON t2.order_code = A.order_code
WHERE (YEAR(A.plat_create_time) = 2019) AND A.status = 6 AND t1.lp_sign_time IS NOT NULL
GROUP BY WEEK(A.plat_create_time, 1);

но когда я его выполняю, MySQL всегда выдает сообщение об ошибке «Неизвестный столбец» t2.plat_create_time «в списке полей». Мой ожидаемый результат - что-то вроде этого

Week | Completed Order | Unpaid Order
1         886              51
2         734              42
3         868              40
4         1000             31

Что я должен изменить в своем запросе?

1 Ответ

0 голосов
/ 10 мая 2019

Изменение:

SELECT order_code, WEEK(plat_create_time,1) AS 'Create Time'

на:

SELECT order_code, WEEK(plat_create_time,1) AS 'Create Time', plat_create_time
...