Witam.
Próbuje w SQL (Oracle) zrobić takie coś, aby rekordy o takiej samej kolumnie (np jakiś barcode) były wyświetlone w postaci:
rekord_1_1 5
rekord_1_2
rekord_1_3
rekord_1_4
rekord_1_5
rekord_2_1 2
rekord_2_2
Jakieś pomysły ??
Witam.
Próbuje w SQL (Oracle) zrobić takie coś, aby rekordy o takiej samej kolumnie (np jakiś barcode) były wyświetlone w postaci:
rekord_1_1 5
rekord_1_2
rekord_1_3
rekord_1_4
rekord_1_5
rekord_2_1 2
rekord_2_2
Jakieś pomysły ??
poczytaj o group by i count
fasadin napisał(a):
poczytaj o group by i count
Chodzi właśnie o to, aby rekordy wyświetlały się wszystkie natomiast ich liczba (spełniająca jakieś warunki) była wyświetlana tylko przy jednym z nich.
P.S
w skrócie:
GROUP BY - grupuje,
COUNT - zlicza (także z warunkami).
Sprawdź coś takiego.
select kolumna1, count(kolumna2) from tabela group by kolumna1
EDIT: Może napisz konkretnie jakie masz przykładowe dane i co chcesz osiągnąć. Przyznam się, że nie do końca rozumiem o co Ci chodzi.
Chodzi o to, aby zliczał ile rekordów spełnia jakiś tam warunek, przy czym liczbę ile ich spełnia chciałbym wyświetlić tylko przy pierwszym takim rekordzie.
Na oko wygląda mi to na rollup -> https://technet.microsoft.com/en-us/library/ms189305(v=sql.90).aspx
Grupowanie with rollup
doda ci kolumne podsumowującą dla grupowanych rekordów.
Jest tak:
PL695017 ENDO 70290148 AL.DZIECI POLSKICH 20 INSTYTUT-POMNIK CENTRUM 04736 WARSZAWA 2
PL695018 ENDO 70290148 AL.DZIECI POLSKICH 20 INSTYTUT-POMNIK CENTRUM 04736 WARSZAWA 2
PL693618 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
PL693617 ENDO 70289859 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
PL693612 ENDO 70289860 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
PL693613 ENDO 70289860 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
PL693614 ENDO 70289860 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
PL693616 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
A powinno być tak ;)
PL695017 ENDO 70290148 AL.DZIECI POLSKICH 20 INSTYTUT-POMNIK CENTRUM 04736 WARSZAWA 2
PL695018 ENDO 70290148 AL.DZIECI POLSKICH 20 INSTYTUT-POMNIK CENTRUM 04736 WARSZAWA
PL693618 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA 6
PL693617 ENDO 70289859 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA
PL693612 ENDO 70289860 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA
PL693613 ENDO 70289860 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA
PL693614 ENDO 70289860 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA
PL693616 AL.JANA PAWLA 120A BUD. SAMODZIELNY ZESPOL 07410 OSTROLEKA
i na podstawie czego ma przestac wyswietlac count? bo tego nadal nie napisales...
@Kremius tak sie po prostu nie da, a przynajmniej nie bez kombinowania. Generalnie zapytanie SQL zwraca ci krotki które mają w kolumnach pewne wartości. A ty sobie chcesz (Bóg jeden wie po co...) w pewnych sytuacjach usuwać pewne dane. Zapytanie służy do pobrania danych z bazy a nie do ich obróbki! Pobierz dane jak człowiek a potem co sobie z nimi zrobisz to juz twoja sprawa, ale nie próbuje na siłę tego zrobić po stronie bazy...
W pierwszej kolumnie jest ta sama wartość (gdzie ostatnia cyfra to liczba porządkowa).
W excelu wygląda to tak:
=JEŻELI(D2<>D1;LICZ.JEŻELI(D:D;D2);"")