Sie benötigen ein Wahr/Falsch-Ergebnis in der ersten Klausel Ihrer CASE WHEN
Erklärung für sie zu funktionieren.
Ändern es zu so etwas wie:
Select HEADER_ID
, CASE WHEN MIN(OPPTY_HEADER_ID) > 0 THEN STATCD = 'SP66' ELSE STATCD END AS STACD
, TYPE
, NL_IND
FROM nl_dups_load
Will ‚fix‘ diesen bestimmten Fehler, aber das Ergebnis kann nicht sein, was Sie suchen. Außerdem glaube ich nicht, dass Sie eine Aggregatfunktion (d. H. "MIN") in einer CASE-Anweisung in diesem Format verwenden können, sodass Sie möglicherweise auf einen anderen Fehler stoßen, wenn Sie den ursprünglichen Fehler beheben.
Sie müssen Ihre Frage und das gewünschte SQL-Ergebnis besser erklären.
EDIT:
I should have included more info. This table is a table of duplicate header_ids. Each header_id has and oppty_header_id. so there are 2 oppty_header_id to each header_id. so I wan to take the min oppty_header_id per header id and change its statcd.
Klingt wie Sie so etwas wie die folgenden (mit vielen Annahmen gemacht werden) wollen. Testen Sie dies, bevor Sie es verwenden, da UPDATE-Abfragen nicht einfach rückgängig gemacht werden können.
UPDATE A
SET A.STATCD = 'SP66'
FROM nl_dups_load AS A
INNER JOIN (
SELECT B.HEADER_ID, MIN(OPPTY_HEADER_ID) AS MinOppty
FROM nl_dups_load AS B GROUP BY B.HEADER_ID
) AS C ON A.HEADER_ID = C.HEADER_ID AND A.OPPTY_HEADER_ID = C.MinOppty
Obwohl, ich würde wirklich einige Beispiele Zeilen Ihrer Quelltabelle und ein Beispiel für die gleichen Zeilen mit den Änderungen in einer Ergebnistabelle sehen muß, um sicher zu wissen, dass das ist, was du bist zu tun.
Was möchten Sie tun? Und ist das eine Art von RDBMS-Problem? – Strawberry
Ich hätte mehr Infos enthalten sollen. Diese Tabelle ist eine Tabelle mit doppelten header_ids. Jede header_id hat und oppty_header_id. also gibt es 2 oppty_header_id für jede header_id. also nehme ich die min oppty_header_id per header id und ändere die statcd. –
Bitte bearbeiten Sie Ihre Frage, um die Informationen in Ihren Kommentar aufzunehmen. –