Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MS SQL] sumowanie komórek
ghost1511
post
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

Ostrzeżenie: (0%)
-----


Otóż posiadam tabele:
CODE
SYMBOL_ART ILOŚĆ
SC21075 4
SC24982 2
SC25014 9
SC25014 5
SCLA9D4002 1
SCLC1D115B7 3
SCLC1D115P7 1
SCLC2K0910P7 2
SCLC2K0910P7 7
SCRE11RCMU 3


wywolana zapytaniem
CODE
SELECT KLUCZ_DOK, 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 ''


jak zesumowac rekordy o tym samym symbolu ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trafas
post
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

Ostrzeżenie: (0%)
-----


Zakładając, że tabele wyglądają mniej więcej tak:


  1. CREATE TABLE POZ_DOK(
  2. SYMBOL_ART int,
  3. KLUCZ_DOK varchar(20),
  4. ILOSC int
  5. )
  6.  
  7. CREATE TABLE ARTYKULY
  8. (
  9. SYMBOL_ART int,
  10. KOD_KRESK int
  11. )
  12.  
  13. -- insert into POZ_DOK
  14. -- select 1,'PZ/1 /10/0001801',4
  15. -- select 2,'PZ/1 /10/0001801',3
  16. -- select 3,'PZ/1 /10/0001801',5
  17. -- select 1,'PZ/1 /10/0001802',4
  18. -- select 2,'PZ/1 /10/0001802',3
  19.  
  20. INSERT INTO ARTYKULY
  21. -- select 1,123
  22. -- select 2,456
  23. -- select 3,789
  24.  
  25.  
  26. SELECT * FROM ARTYKULY
  27. SELECT * FROM POZ_DOK




Możesz wywołać swoje zapytanie tak:


  1. SELECT
  2. KLUCZ_DOK,
  3. sum(ILOSC) AS ILOSC,
  4. KOD_KRESK,
  5. pd.SYMBOL_ART
  6. FROM POZ_DOK pd
  7. LEFT JOIN ARTYKULY a ON a.SYMBOL_ART = pd.SYMBOL_ART
  8. WHERE KLUCZ_DOK LIKE '%PZ/1 /10/000180%'
  9. GROUP BY KLUCZ_DOK,KOD_KRESK,pd.SYMBOL_ART




  1. SELECT KLUCZ_DOK, sum(ILOSC) AS ILOSC, KOD_KRESK, POZ_DOK.SYMBOL_ART
  2. FROM POZ_DOK
  3. LEFT JOIN ARTYKULY ON (ARTYKULY.SYMBOL_ART = POZ_DOK.SYMBOL_ART)
  4. 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:


  1. SELECT
  2. pd.SYMBOL_ART,
  3. KOD_KRESK,
  4. sum(ILOSC) AS ILOSC
  5. FROM POZ_DOK pd
  6. INNER JOIN ARTYKULY a ON a.SYMBOL_ART = pd.SYMBOL_ART
  7. WHERE KLUCZ_DOK LIKE '%PZ/1 /10/000180%'
  8. GROUP BY pd.SYMBOL_ART,KOD_KRESK


Pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 02:54