Wpis z mikrobloga

#oracle #sql

Mirki, mam zapytanie, które zwraca mi pesele, różne ilości. Czasami jest 4 wierszy, czasami 1, a może być i 10, ale wciąż jest praca na jednej kolumnie.

Chcę zrobić taki warunek, że jeżeli wszystkie pesele się zgadzają to pokazuje 1(true), a jeżeli choć jeden się różnic to 0(false).

Jak to obsłużyć? Myślałem o unpivocie i porównywaniu kolumn, ale nie wychodzi mi to do końca...
  • 10
@kurazjajami:
A co chcesz zrobić?
NA 100% da się twój probelm roziwązać w samym zapytaniu.
Podejrzewam że za pomocą:
GROUP BY pesel.
(a jak potrzebujesz ilość to dodatkową kolumnę sum(1)
@deryt:

Mam kolumnę PESEL w formacie:

KOLUMNA1
_________
PESEL1
PESEL2
PESEL3
PESEL4
PESEL5

Chciałbym, aby pesele pokazywały się w osobnych kolumnach. Tj:

KOLUMNA1 KOLUMNA1 KOLUMNA1 KOLUMNA1 KOLUMNA1
_________________________________________
PESEL1 PESEL2 PESEL3 PESEL4 PESEL5
@deryt: generalnie mam bazę i na tabeli sprawdzam czy jakiś nip należy do róznych peseli. Jeżeli nalezy do więcej niż jednego pesela to chciałbym aby cokolwiek się pokazywało, że jest błąd
@deryt: trochę źle wtyłumaczyłem.

Mam zapytanie:

SELECT PESEL
FROM klienci
WHERE NIP = '0000000000;

Zwraca mi to 5 różnych peseli. Zamiast wyniku (5 peseli) chciałbym aby pokazało się 0 (błąd), a gdy te pesele będą zgodne dla innego nipu to pokazywałaby się 1.
@kurazjajami:
SELECT sum(1) x,pesel
FROM klienci
WHERE NIP = '0000000000
group by nip.

(zawsze zwraca jeden wiersz)

Jeśli x=1 to masz jeden pesel podpięty pod ten nip, jak >1 to masz "błąd" - wiele peseli.
Wynik zapytania nie zawsze musi być "ładny".
Widzisz 5 - widzisz błąd.
sql nie ma wyświetlać odpowiedzi ładnym, najlepiej pokolorowanym zdaniem typu "Pod ten NIP podpięte jest 5 nipów, wiec jest błąd" - on wyświetla tylko