Zakładając, że tabele wyglądają mniej więcej tak:
CREATE TABLE POZ_DOK(
SYMBOL_ART int,
KLUCZ_DOK varchar(20),
ILOSC int
)
CREATE TABLE ARTYKULY
(
SYMBOL_ART int,
KOD_KRESK int
)
-- insert into POZ_DOK
-- select 1,'PZ/1 /10/0001801',4
-- select 2,'PZ/1 /10/0001801',3
-- select 3,'PZ/1 /10/0001801',5
-- select 1,'PZ/1 /10/0001802',4
-- select 2,'PZ/1 /10/0001802',3
INSERT INTO ARTYKULY
-- select 1,123
-- select 2,456
-- select 3,789
SELECT * FROM ARTYKULY
SELECT * FROM POZ_DOK
Możesz wywołać swoje zapytanie tak:
SELECT
KLUCZ_DOK,
sum(ILOSC) AS ILOSC,
KOD_KRESK,
pd.SYMBOL_ART
FROM POZ_DOK pd
LEFT JOIN ARTYKULY a ON a.SYMBOL_ART = pd.SYMBOL_ART
WHERE KLUCZ_DOK LIKE '%PZ/1 /10/000180%'
GROUP BY KLUCZ_DOK,KOD_KRESK,pd.SYMBOL_ART
SELECT KLUCZ_DOK, sum(ILOSC) AS ILOSC, KOD_KRESK, POZ_DOK.SYMBOL_ART
FROM POZ_DOK
LEFT JOIN ARTYKULY ON (ARTYKULY.SYMBOL_ART = POZ_DOK.SYMBOL_ART)
WHERE KLUCZ_DOK LIKE 'PZ/1 /10/000180' GROUP BY POZ_DOK.SYMBOL_ART
W zapytaniu wyżej wyrzuciło Ci błąd, ponieważ zapytanie pobiera wartości z 3 różnych kolumn, i aby funkcja agregująca zadziałała musi być zgodność pomiędzy ilością pobieranych kolumn a ilością kolumn agregowanych.
Dodatkowo proponują korzystać z aliasów tabel - czytelniejszy kod.
Przy wykorzystaniu LIKE koszystaj z %, inaczej zapytanie zwróci pustą tabelę.
Jednak aby zadziałała suma, musisz zrezygnować z niektórych kolumn.
Poniżej SELECT zliczający wystąpienia artykułu na różnych POZ_DOK:
SELECT
pd.SYMBOL_ART,
KOD_KRESK,
sum(ILOSC) AS ILOSC
FROM POZ_DOK pd
INNER JOIN ARTYKULY a ON a.SYMBOL_ART = pd.SYMBOL_ART
WHERE KLUCZ_DOK LIKE '%PZ/1 /10/000180%'
GROUP BY pd.SYMBOL_ART,KOD_KRESK
Pozdrawiam.