Haben Sie eine Tabelle wie folgt. Wenn der maximale Wert von confidenceCode eindeutig ist, geben Sie diese Zeile zurück, andernfalls no.Max Wert einzigartig
LocationID ConfidenceCode
017755029 05
017755029 05
017755029 01
018577655 05
018577655 09
021886301 10
021886301 09
021886301 09
Erwartete Ausgabe
LocationID ConfidenceCode
018577655 09
021886301 10
My SQL, wie unten, es funktioniert, auf der Suche nach besseren Version
;WITH CTEConfidenceCode as
(
SELECT *, dense_rank() over (partition by LocationID order by
[ConfidenceCode] desc) as ConfidenceRowNum FROM testTable
),
CTEGroup as
(SELECT DUNS1,[ConfidenceCode],count(1) countValue FROM CTEConfidenceCode
WHERE ConfidenceRowNum=1
GROUP BY LocationID,[ConfidenceCode])
SELECT * FROM CTEGroup WHERE countValue=1
Ich meine, ich nehme an, Sie könnten nur eine ausgewählte locationid, max (confidencecode) mit einer nicht vorhandenen Klausel? z.B. etwas wie 'select locationid, confidencycode von (wählen locationid, confidencecode = max (confidencecode) von testtable group by locationid) als t wo nicht existiert (wähle 1 aus testtable wo locationid = t.locationid und confidencecode = t.confidencecode hat count (*)> 1); aber ich weiß nicht, wie viel besser das ist oder nicht. – ZLK
Vielleicht könnten Sie eine bessere Erklärung dafür liefern, warum mehr als eine Zeile zurückgegeben werden soll. Msgstr "Wenn der max. Wert für den confidenceCode eindeutig ist, dann gebe diese Zeile zurück, ansonsten nein." erklärt es nicht. – HABO