Zapytanie zwracające duplikaty.

0

Witam,
Mam zapytanie: select konto from Konta_podmiotow where id in(56,56);
W odpowiedzi konto nr: 9
Jak zrobić aby w odpowiedz było 9,9 ?
Czyli, ile id tyle odpowiedz.

0

Nie rozumiem wynik powinien być taki, zakładając że masz te 2 id w bazie:

konto
9
9

Aby to zwrócić w jednej linijce to trzeba pogrupować, np. uzywajac LISTAGG https://oracle-base.com/articles/12c/listagg-function-enhancements-12cr2

1

To powinno być jakoś tak:

SELECT konto, count(*) FROM Konta_podmiotow GROUP BY konto

dawno w SQL nie robiłem więc głowy nie dam, ale powinno Ci to wypisać ile masz pozycji z danym kontem.

Bardzo zdawkowo napisałeś pytanie, więc jeżeli chodziło tobie o co innego to rozwiń swoje myśli.

1

@Sarrus:

SELECT konto, count(*) FROM Konta_podmiotow GROUP BY konto

Dokładniej:

SELECT konto, COUNT(*) 
FROM Konta_podmiotow 
GROUP BY konto
HAVING COUNT(*) > 1

No, bo w końcu szukamy duplikatów ;)

0

LISTAGG - trudna składnia mamy error.
SELECT konto, count ()
FROM Konta_podmiotow
WHERE id in(5680,5680)
GROUP BY konto
HAVING COUNT(
) > 1 -- Pusty wynik

  1. W warunku podaje id kont.
  2. Nie chce zliczonych duplikatów, chce mieć wypisane wszystkie konta podmiotów z duplikatami.
  3. W wyniku zapytania chce dostać wypisane konta podmiotów które są w warunku.
    SELECT konto
    FROM Konta_podmiotow
    WHERE id in(56,56); -- Obecny Wynik: 9 -- Jaki chce dostać Wynik: 9, 9.
0

WHERE id in(5680,5680) - po co where .. in skoro szukasz dwóch identycznych id? To samo masz w pierwszym poście; trochę to bez sensu i wygląda na problem XY.

SELECT konto, count ()
FROM Konta_podmiotow
WHERE id in(5680,5680)
GROUP BY konto
HAVING COUNT() > 1 -- Pusty wynik

Skoro odpytujesz jeden numer id to wynik nie może być inny niż pusty.

0

Na postgreSQL szło by tak:

SELECT  k.* FROM konta k JOIN (VALUES (5680), (5680)) x(id) on k.id=x.id
0
grzesiek51114 napisał(a):

WHERE id in(5680,5680) - po co where .. in skoro szukasz dwóch identycznych id? To samo masz w pierwszym poście; trochę to bez sensu i wygląda na problem XY.

SELECT konto, count ()
FROM Konta_podmiotow
WHERE id in(5680,5680)
GROUP BY konto
HAVING COUNT() > 1 -- Pusty wynik

Skoro odpytujesz jeden numer id to wynik nie może być inny niż pusty.

Where in... tych id mam 100 i w odpowiedzi dostaje 60 kont bo reszta miała zdublowane id. Wyniki z zapytania chce skopiować do excela i brak jest pokrycia 1:1 w wierszach.

0

Hej podłącze się do tematu żeby nie dublować :)
Mam tabelę z kolumnami id, name, phone, vendorID.
Chciałbym wyciągnąć wszystkie wiersze z powtarzającym się numerami tel. (phone) dla danego vendora (potrzebuję id powtarzających się recordów).
Znalazłem takie rozwiązanie ale coś nie działa:

SELECT y.CustomerID,y.CustomerName,y.Country
 FROM Customers y
 INNER JOIN (
                        SELECT CustomerID, CustomerName,Country COUNT(*) AS CountOf
                        FROM Customers
                         WHERE vendorID=123
                        GROUP BY Country
                        HAVING COUNT(*)>1
                    ) dt
 WHERE vendorID=123
 ON y.Country=dt.Country;

Czy wie ktoś jak powinno wyglądać poprawne zapytanie? Dodam, że baza MySql.

0

Co znaczy coś nie działa? Konkretnie jakiś błąd, co jest wysypane w logu, ahh sformatuj kod i wpisz go w odpowiednie znaczniki żebyśmy oczu nie męczyli..

1

A jak to miało by działać? Przecież to zlepek różnych zapytań. ON jest po WHERE na samym końcu. To się nie może udać.

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