CompusaMedlem sedan jan. 20023 327 inlägg DBMS: SQL Server 2005 (gärna stöd för 2000)
Så här ser min SQL-fråga ut:
SELECT UppdragStatusTypId, id
FROM UppdragsStatus US
WHERE EXISTS
(
SELECT UppdragsId, UppdragStatusTypId, Datum, UppdateradDatumTid
FROM uppdragsstatus
GROUP BY UppdragsId, UppdragStatusTypId, Datum, UppdateradDatumTid
having count(*) > 1
AND Datum IS NOT NULL
AND UppdragsId = US.UppdragsId
AND UppdragStatusTypId = US.UppdragStatusTypId
AND Datum = US.Datum
AND UppdateradDatumTid = US.UppdateradDatumTid
)
Får ut resultat från en SQL fråga som ser ut så här
StatusId Id
1. 5 21154
2. 5 21730
3. 6 21155
4. 6 21731
5. 7 21156
6. 7 21732
Skulle på något sätt bara vilja få ut raderna 2, 4 och 6, då de är dubbletter som jag ska ta bort. Men jag vill inte att min sql-fråga ska ta bort raderna 1, 3 och 5... Det sambandet som finns är att rad 2, 4 och 6 har högre id än sina orginal (1, 3, 5).
Är det möjligt?
Peter SMedlem sedan dec. 20025 483 inlägg SELECT UppdragStatusTypId, max(id)
FROM UppdragsStatus US
WHERE EXISTS
(
SELECT UppdragsId, UppdragStatusTypId, Datum, UppdateradDatumTid
FROM uppdragsstatus
GROUP BY UppdragsId, UppdragStatusTypId, Datum, UppdateradDatumTid
having count(*) > 1
AND Datum IS NOT NULL
AND UppdragsId = US.UppdragsId
AND UppdragStatusTypId = US.UppdragStatusTypId
AND Datum = US.Datum
AND UppdateradDatumTid = US.UppdateradDatumTid
)
group by UppdragStatusTypId
CompusaMedlem sedan jan. 20023 327 inlägg Så där skulle det se ut ja! Var och nosade på "max" men fick det inte att fungera. Stort tack!
Naturligtvis hann jag lösa det på ett annat vis också . Har inte bestämt mig ännu vilken jag ska köra på men det ger hur som helst samma resultat ;)
SELECT US2.UppdragStatusTypId, US2.Id
FROM uppdragsstatus US1
INNER JOIN uppdragsstatus US2 ON
US1.UppdragsId = US2.UppdragsId
AND US1.UppdragStatusTypId = US2.UppdragStatusTypId
AND US1.Datum = US2.Datum
AND US1.UppdateradDatumTid = US2.UppdateradDatumTid
AND (US1.Id <> US2.Id AND US1.Id < US2.Id)