/ / SQL zjednodušujúci prípad v prípade v prípade - sql, prípad

SQL zjednodušenie konaní vo veci v prípade - sql, prípad

Dostal som nasledujúci kód SQL (súčasť vybraného príkazu):

Case
When HilfsTab2.Gruppe = "HST" And Basis.Breite_FLA = Basis.Breite Then 0
Else Case When HilfsTab2.Gruppe = "SA" Or HilfsTab2.Gruppe = "HO / TB" Or
HilfsTab2.Gruppe = "PR" Then 0 Else Case
When HilfsTab2.Gruppe Is Null Then -1 Else 1 End End
End As IsHST_Fluegel

Teraz to prechádzam po niekoľkomiliónovej tabuľkezáznamy. Z môjho chápania SQL skontroluje prvý prípad, keď pre všetky riadky, potom druhý pre všetky položky atď. To trvá veky. Teraz som si myslel, že musí existovať jednoduchší spôsob, ako to urobiť.

Myslel som na uloženú procedúru / vlastnú funkciu, ktorá má v zásade výstup -1, 0 alebo 1 v závislosti od záznamu.

Vopred ďakujem

odpovede:

1 pre odpoveď č. 1

Pre možné zlepšenie rýchlosti urobte NULL najskôr skontrolujte, či je porovnanie stĺpcov posledné, a refaktor, aby ste odstránili vnorené súbory CASE:

CASE WHEN HilfsTab2.Gruppe IS NULL
THEN -1
WHEN HilfsTab2.Gruppe IN ("SA", "HO / TB", "PR")
OR (HilfsTab2.Gruppe = "HST" AND Basis.Breite_FLA = Basis.Breite)
THEN 0
ELSE 1
END AS IsHST_Fluegel

0 pre odpoveď č. 2

Váš prípad by sa dal zjednodušiť ako:

Case
When HilfsTab2.Gruppe = "HST" And Basis.Breite_FLA = Basis.Breite Then 0
When HilfsTab2.Gruppe in ("SA", "HO / TB", "PR") Then 0
When HilfsTab2.Gruppe Is Null Then -1
Else 1
End As IsHST_Fluegel

To však váš dopyt neurýchli. Ak chcete vybrať milióny riadkov, aj tak by to chvíľu trvalo.