2017-06-20 4 views
0

Ich habe 2 Abfragen. Der erste ist der Netto-Betrag und der zweite ist die Summe des Budgets. Ich muss das Ergebnis einschließlich des Geschäftsnamens und der Speichernummer anzeigen, die aus der Differenztabelle stammen.Wie kombiniere ich 2 Abfragen aus Differenztabellen

Hier ist meine erste Frage insgesamt netamount zu finden:

SELECT sum(a.netamt) as netamt, b.store_name 
    FROM site_sales a JOIN site_store b ON b.storenum = a.storenum 

    WHERE a.busidate >= '2017-01-01' AND a.busidate <='2017-04-30' 
    GROUP BY a.storenum 

Die zweite Frage ist Gesamtbudget

SELECT 

SUM(CASE WHEN c.busidate BETWEEN '2017-01' AND '2017-04' THEN c.budget ELSE 0 END) as budget, 
b.store_name 
FROM site_kpimthslsbgt c JOIN site_store b ON b.storenum = c.storenum 
GROUP BY c.storenum 

Ich brauche zu kombinieren beide dieser Abfrage zu finden. Das Ergebnis der Ausgabe sollte like this

+0

Beitrag Ausgabe der einzelnen Abfragen als auch. –

Antwort

0

versuchen, dies auch müssen Sie Bedingungen am Ende setzen beitreten, wenn es mehrere Datensätze geholt in Ihrer individuellen Abfragen sind:

Select x.netamt, y.budget, y.store_name 
from 
(
SELECT sum(a.netamt) as netamt, b.store_name 
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum 
WHERE a.busidate >= '2017-01-01' AND a.busidate <='2017-04-30' 
GROUP BY a.storenum 
) x 
inner join 
(
SELECT 
SUM(CASE WHEN c.busidate BETWEEN '2017-01' AND '2017-04' THEN c.budget ELSE 0 END) as budget, 
b.store_name 
FROM site_kpimthslsbgt c JOIN site_store b ON b.storenum = c.storenum 
GROUP BY c.storenum 
) y 
on x.store_name = y.store_name 
+0

Vielen Dank. Diese Abfrage gibt eine perfekte Berechnung für beide Tabellen. Danke –

0
SELECT sum(a.netamt) as netamt,SUM(CASE WHEN c.busidate BETWEEN '2017-01' AND '2017-04' THEN c.budget ELSE 0 END) as budget,b.store_name 
FROM site_store b 
JOIN site_kpimthslsbgt c ON b.storenum = c.storenum 
JOIN site_sales a ON b.storenum = a.storenum 
GROUP BY b.storenum 

obige Abfrage Versuchen.

Hoffe, das wird Ihnen helfen.

+0

Ich habe versucht, diese Abfrage, gibt es Ergebnis, aber falsche Berechnung für Netamount und Budget. –

0

Ich denke, es gibt 4 mögliche Szenarien hier, Geschäfte, die Umsatz und Budget haben, Geschäfte, die Umsatz haben, aber kein Budget, Geschäfte, die Budget aber keinen Umsatz haben, Geschäfte, die weder Umsatz noch Budget haben.

Bei

DROP TABLE IF EXISTS site_sales,site_budget; 
CREATE TABLE site_sales(ID INT auto_increment primary key, site_id int, busidate date,amt int); 

create table site_budget(ID INT auto_increment primary key, site_id int, busidate date,amt int); 

insert into site_sales (site_id,busidate,amt) values 
(1,'2017-04-01',10),(1,'2017-04-01',20), 
(2,'2017-04-01',10); 

insert into site_budget (site_id,busidate,amt) values 
(1,'2017-04-01',200), 
(3,'2017-04-01',100); 

Diese Abfrage

SELECT b.name, 
     sum(case when a.busidate between '2017-01-01' and '2017-04-30' then a.amt else 0 end) as netamt, 
     ifnull((select SUM(CASE WHEN c.busidate BETWEEN '2017-01-01' AND '2017-04-30' THEN c.amt ELSE 0 END) from site_budget c where b.id = c.site_id),0) as budget 
FROM sites b 
left JOIN site_sales a ON b.id = a.site_id 
GROUP BY b.id 

Ergebnis

+--------+--------+--------+ 
| name | netamt | budget | 
+--------+--------+--------+ 
| Store1 |  30 | 200 | 
| Store2 |  10 |  0 | 
| Store3 |  0 | 100 | 
| Store4 |  0 |  0 | 
+--------+--------+--------+ 
4 rows in set (0.00 sec) 
+0

Vielen Dank! Ihre Anfrage funktioniert auch perfekt. Es gibt korrekte Berechnung für Netamount und Budget folgen Store Namen. :) –

Verwandte Themen