
MSSQL vypis hodnoty bez paru
Mam tabulku mssql (pozor, nie najnovsi, mozno par rokov dozadu), kde mam stlpce: kod, text, mesiac, hodnota, od, . . . . ostatne stlpce nezaujimave.
V hodnote kod je cislo, a moze byt kladne alebo zaporne. Nie kazdy kladny kod ma svoj zaporny protajsok, a nie kazdy zaporny kod ma svoj kladny protajsok. Kody sa mozu opakovat.
Rovnaky kod ma rovnaky text.
Ide mi o to, ziskat vypis tych zapornych hodnot kodu, ktore nemaju kladny protajsok (vypisat staci kod a text za urcity mesiac)
napr kod, 1, 2, 3, 2, 4, 4, 4, -5, -6, -7, -1, -2, -3, -2, -7, -7, -7
Vo vypise by boli len tri riadky pre kody -5, -6 , -7
-1, -2 , -3 maju svoj kladny protajsok, tie ma nezaujimaju, a kladna 4 ma nezaujima
nemoze to byt procedura, mam k dispozicii len riadok - okno ktoreho obsah viem spustit, takze iba jeden select, alebo viac spojenych union
Je tatketo nieco mozne s takymito obmedzeniami?
Nemám kde vyzkoušet, ale něco takového by mohlo fungovat.
Nebo
Skusim aj toto, ta prva verzia je pre mna citatelnejsia , ale skusim , dik.
při vší úctě k Wikanovi je Jafiho řešení čistější a hlavně vysoce efektivní, protože pro každý řádek nespouští subselect.
Ani bych se nedivil, kdyby to ve výsledku nebylo zcela totožné. SQL dotazy tak úplně neříkají, jak má vzniknout výsledek, ale spíš jenom jak má vypadat. Pak nastupuje optimalizace a zrovna subselecty se na joiny převádí zcela běžně.
Je treba to vyzkouset, protoze optimalizator casto dela uplne necekane veci. Nekdy vyjde lip to, co by clovek necekal. Nekdy uplne ignoruje clusterovane indexy, pokud mu je v prikazu nevnutis a pak je vysledek v ms misto minut, ktere by z toho normalne byly.
ono taky záleží na objemu dat. U nějaké pármegové DB to bude asi buřt i bez optimalizací.
V tejto tabulke je max niekolko stoviek zaznamov, a ci to bude trvat 1 ms alebo 1 min je mi uplne fuk
Je to v podstate len pomocny vystup na dohladanie resp kontrolu inych hodnot, a vo vysledku je tak max do stovky poloziek