2017-02-14 3 views
0

Ich habe diese AbfrageErhalten Sie Daten aus verschiedenen zeitlichen Rahmen

SELECT concat(order_delivery_data.order_delivery_data_name,' sent'), 
     sum(case `order`.order_status when 'sent' then 1 else 0 end) '0-7 days' 
FROM order_delivery_data 
    INNER JOIN `order` ON order_delivery_data.order_id = `order`.order_id 
where order_delivery_data.order_delivery_data_name in ('Казахстан КАЗПОЧТА') 
     and order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
UNION 
SELECT concat(order_delivery_data.order_delivery_data_name,' parcelonaplace'), 
     sum(case `order`.order_status when 'parcel-on-a-place' then 1 else 0 end) parcelonaplace 
FROM order_delivery_data 
    INNER JOIN `order` ON order_delivery_data.order_id = `order`.order_id 
where order_delivery_data.order_delivery_data_name in ('Казахстан КАЗПОЧТА') 
     and order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 

Welche 2 Spalten ist. Wie erhalten Sie mehr Spalten in derselben Abfrage wie folgt?

enter image description here

Antwort

1

Verwenden bedingte Aggregation in Ihrem Fall Anweisungen und ändern Sie Ihre where-Klausel. Abhängig von den gewünschten Ergebnissen müssen Sie möglicherweise die 2. Summe ändern, um einen Datumsbereich statt eines Intervalls von 14 Tagen zu verwenden.

SELECT concat(order_delivery_data.order_delivery_data_name,' sent'), 

sum(case When `order`.order_status = 'sent' 
    AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) then 1 else 0 end) '0-7 days', 
sum(case When `order`.order_status = 'sent' 
    AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY) then 1 else 0 end) '8-14 days'  
FROM order_delivery_data 
INNER JOIN `order` ON order_delivery_data.order_id = `order`.order_id 
WHERE order_delivery_data.order_delivery_data_name in ('Казахстан КАЗПОЧТА') 
    AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY) 

UNION 

SELECT concat(order_delivery_data.order_delivery_data_name,' parcelonaplace'), 
sum(case when `order`.order_status = 'parcel-on-a-place' 
    AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) then 1 else 0 end) `parcelonaplace 0-7`, 
sum(case when `order`.order_status = 'parcel-on-a-place' 
    AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY) then 1 else 0 end) `parcelonaplace 8-14 

FROM order_delivery_data 
INNER JOIN `order` ON order_delivery_data.order_id = `order`.order_id 
WHERE order_delivery_data.order_delivery_data_name in ('Казахстан КАЗПОЧТА') 
    AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY) 
Verwandte Themen