tak basicially jest 1 pytanie 1 Problem:SQL za pomocą CASE w SELECT z GROUP BY. Potrzebujesz Case-wartość, ale dostać wiersza wartość
1. pytanie - kiedy mam jak 100 kolumn w tabeli (a nie klucz lub uindex jest ustawiony) i Chcę dołączyć do tej tabeli lub dokonać jej podrzędności, czy naprawdę muszę wypisać każdą nazwę kolumny?
2. Problem - Poniższy przykład pokazuje pytanie 1. i mój rzeczywisty problem instrukcja_sql
Przykład:
A.FIELD1,
(SELECT CASE WHEN B.FIELD2 = 1 THEN B.FIELD3 ELSE null FROM TABLE B WHERE A.* = B.*) AS CASEFIELD1
(SELECT CASE WHEN B.FIELD2 = 2 THEN B.FIELD4 ELSE null FROM TABLE B WHERE A.* = B.*) AS CASEFIELD2
FROM TABLE A
GROUP BY A.FIELD1
Fabuła jest: jeśli nie stawiać sprawy do własnego oświadczenia select, muszę umieścić rzeczywisty rowname w GROUP BY, a GROUP BY nie grupuje wartości NULL z CASE, ale rzeczywistą wartość z wiersza. I z tego powodu musiałbym albo dołączyć, albo zlikwidować wszystkie kolumny, ponieważ nie ma klucza i nie ma zindeksowania, ani nie znalazłem innego rozwiązania.
DBServer to DB2.
Teraz, aby opisać to tylko słowami i bez SQL: Mam "elementy zamówienia", które można podzielić na "ZD" i "EK" (1 = ZD, 2 = EK) i mogą być pogrupowane według " dystrybutor". Mimo że "elementy zamówienia" mogą mieć jeden z dwóch różnych "działów" (ZD, EK), pola/wiersze dla "ZD" i "EK" są zawsze wypełnione. Potrzebuję zgrupowania, aby rozważyć "departament" i tylko wtedy, gdy zmienia się nazwa "departamentu" (ZD lub EK), wtedy chcę utworzyć nową grupę.
SELECT
(CASE WHEN TABLE.DEPARTEMENT = 1 THEN TABLE.ZD ELSE null END) AS ZD,
(CASE WHEN TABLE.DEPARTEMENT = 2 THEN TABLE.EK ELSE null END) AS EK,
TABLE.DISTRIBUTOR,
sum(TABLE.SOMETHING) AS SOMETHING,
FROM TABLE
GROUP BY
ZD
EK
TABLE.DISTRIBUTOR
TABLE.DEPARTEMENT
Ten działał w SELECT i ZD, EK w GROUP BY. Jedynym problemem było to, że nawet jeśli EK nie był wyznaczonym DEPARTEMENTEM, to nadal otwierał on nową grupę, jeśli się zmieniał, ponieważ używał prawdziwej wartości EK, a nie NULL z CASE, jak już wyjaśniałem.
masz na myśli sprawdzenie wartości każdej kolumnie tabeli A do kolumny w tabeli B z tym samym nazwa kolumny i wszystkie kolumny muszą być zgodne? Czy masz na myśli inny rodzaj logiki? – WarrenT
Dokładnie, ale to tylko pytanie, a nie prawdziwy problem, który postaram się dalej/lepiej wyjaśnić w najbliższym czasie. – Khazar