Zapytanie zwracające duplikaty.

Odpowiedz Nowy wątek
2019-01-11 11:18
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.

Pozostało 580 znaków

2019-01-11 11:33
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/artic[...]g-function-enhancements-12cr2

Pozostało 580 znaków

2019-01-11 11:47
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.

edytowany 1x, ostatnio: Sarrus, 2019-01-11 11:48

Pozostało 580 znaków

2019-01-11 11:49
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 ;)

edytowany 1x, ostatnio: grzesiek51114, 2019-01-11 11:49
w sumie fakt ;) - Sarrus 2019-01-11 11:51

Pozostało 580 znaków

2019-01-11 12:53
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.

Pozostało 580 znaków

2019-01-11 13:17
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.

edytowany 3x, ostatnio: grzesiek51114, 2019-01-11 13:19

Pozostało 580 znaków

2019-01-11 13:24
0

Na postgreSQL szło by tak:

SELECT  k.* FROM konta k JOIN (VALUES (5680), (5680)) x(id) ON k.id=x.id

Pozostało 580 znaków

2019-01-11 14:01
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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