Zapytanie SQL - trzy zapytania w jednym,dwa odwołania do tej samej tabeli

0

Witam

Czy możecie mi podpowiedzieć jak (o ile jest to możliwe) z tych trzech zapytań zrobić jedno ?
Kombinowałem coś z aliasami, ale nie dało oczekiwanego efektu...

 
SELECT SUM(ILOSC) AS 'ILOSC P'  FROM [CENTRALA].[dbo].[eMAGLinie] JOIN [CENTRALA].[dbo].[eMAG] ON IdDok=ID WHERE Kod LIKE ('1000')  AND mId=9 AND Rodzaj IN ('PZ', 'MM+', 'PW')

SELECT SUM(ILOSC) AS 'ILOSC R' FROM [CENTRALA].[dbo].[eMAGLinie]  JOIN [CENTRALA].[dbo].[eMAG] ON IdDok=ID WHERE Kod LIKE ('1000')  AND mId=9 AND Rodzaj IN ('WZ', 'MM-', 'RW', 'ZD')

SELECT SUM(ILOSC) AS 'ILOSC S' FROM [CENTRALA].[dbo].[eFPALinie] JOIN [CENTRALA].[dbo].[eFPA] ON IdDok=ID WHERE Kod LIKE ('1000')  AND mId=9

Z góry dziękuję za pomoc.

1
SELECT SUM(CASE WHEN Rodzaj IN ('PZ', 'MM+', 'PW') THEN ILOSC END) AS 'ILOSC P', SUM(CASE WHEN Rodzaj IN ('WZ', 'MM-', 'RW', 'ZD') THEN ILOSC END) AS 'ILOSC R'  FROM [CENTRALA].[dbo].[eMAGLinie] JOIN [CENTRALA].[dbo].[eMAG] ON IdDok=ID WHERE Kod LIKE ('1000')  AND mId=9 

Tego trzeciego się nie da, bo to inna tabela. Ale być może się da - Ty znasz strukturę lepiej (być może łączą się 1:1)

0

Na podstawie porady @Marcin.Miga stworzyłem takie zapytanie:

SELECT
SUM(CASE WHEN efpa.mId LIKE ('1') THEN ILOSC END) AS 'RAABEGO',
SUM(CASE WHEN efpa.mId LIKE ('2') THEN ILOSC END) AS 'OKRZEI',
SUM(CASE WHEN efpa.mId LIKE ('3') THEN ILOSC END) AS 'NADBYSTRZYCKA',
SUM(CASE WHEN efpa.mId LIKE ('4') THEN ILOSC END) AS 'BUKOWA 15',
SUM(CASE WHEN efpa.mId LIKE ('5') THEN ILOSC END) AS 'KIEPURY',
SUM(CASE WHEN efpa.mId LIKE ('6') THEN ILOSC END) AS 'GLUSK',
SUM(CASE WHEN efpa.mId LIKE ('7') THEN ILOSC END) AS 'POGODNA',
SUM(CASE WHEN efpa.mId LIKE ('8') THEN ILOSC END) AS 'NOWY SIWAT',
SUM(CASE WHEN efpa.mId LIKE ('9') THEN ILOSC END) AS 'KRASNICKA',
SUM(CASE WHEN efpa.mId LIKE ('10') THEN ILOSC END) AS 'TURKA'
FROM [CENTRALA].[dbo].[efpa]
JOIN [CENTRALA].[dbo].[efpalinie] ON efpa.Id=eFPALinie.IdDok
WHERE (efpa.DATA BETWEEN '2013-01-01' AND '2013-02-02') AND efpalinie.Kod LIKE '1001'

Mam jeszcze jeden problem... nie mam pomysłu w jaki je przerobić aby wyświetlić dane o więcej niż jednym towarze...
Jeżeli zamienię efpalinie.Kod LIKE '1001' na np. efpalinie.Kod IN '1001,1002,1003' to pokaże mi sumę sprzedaży tych trzech towarów, a chciałbym żeby pokazało sumy w rozbiciu na towary.

1
SELECT
efpalinie.Kod,
SUM(CASE WHEN efpa.mId LIKE ('1') THEN ILOSC END) AS 'RAABEGO',
SUM(CASE WHEN efpa.mId LIKE ('2') THEN ILOSC END) AS 'OKRZEI',
SUM(CASE WHEN efpa.mId LIKE ('3') THEN ILOSC END) AS 'NADBYSTRZYCKA',
SUM(CASE WHEN efpa.mId LIKE ('4') THEN ILOSC END) AS 'BUKOWA 15',
SUM(CASE WHEN efpa.mId LIKE ('5') THEN ILOSC END) AS 'KIEPURY',
SUM(CASE WHEN efpa.mId LIKE ('6') THEN ILOSC END) AS 'GLUSK',
SUM(CASE WHEN efpa.mId LIKE ('7') THEN ILOSC END) AS 'POGODNA',
SUM(CASE WHEN efpa.mId LIKE ('8') THEN ILOSC END) AS 'NOWY SIWAT',
SUM(CASE WHEN efpa.mId LIKE ('9') THEN ILOSC END) AS 'KRASNICKA',
SUM(CASE WHEN efpa.mId LIKE ('10') THEN ILOSC END) AS 'TURKA'
FROM [CENTRALA].[dbo].[efpa]
JOIN [CENTRALA].[dbo].[efpalinie] ON efpa.Id=eFPALinie.IdDok
WHERE (efpa.DATA BETWEEN '2013-01-01' AND '2013-02-02') AND efpalinie.Kod IN ('1001', '1002', '1003')
GROUP BY efpalinie.Kod

1 użytkowników online, w tym zalogowanych: 0, gości: 1