Update - Unterabfrage
Hey,
heute sind dummerweise einige Duplikatdatensätze angelegt bzw. automatisch durch ein fehlerhaften Import eingefügt worden, welche ich wieder los werden möchte.
Ich habe in meiner Tabelle ein Feld AccountNumber, CreatedOn, Delete
Nun sieht es z.B. so aus:
Accountnumber , CreatedOn
10000 , 2010-12-01 18:49:34
10000 , 2011-07-08 14:45:00
10001 , 2010-03-01 18:49:34
10002 , 2010-08-05 04:49:34
10003
10003
Mein Probelm, nicht alle Datensätze sind doppelt. Ich möchte nun alles Datensätze, welche heute angelegt worden sind und welche doppelt sind markieren. bzw. in das Feld "Delete" eine 1 rein schreiben.
Ich wollte erst mal ein select machen, aber da scheitere ich leider schon:
Oder
Ich hoffe ihr habt eine Idee.
Danke
heute sind dummerweise einige Duplikatdatensätze angelegt bzw. automatisch durch ein fehlerhaften Import eingefügt worden, welche ich wieder los werden möchte.
Ich habe in meiner Tabelle ein Feld AccountNumber, CreatedOn, Delete
Nun sieht es z.B. so aus:
Accountnumber , CreatedOn
10000 , 2010-12-01 18:49:34
10000 , 2011-07-08 14:45:00
10001 , 2010-03-01 18:49:34
10002 , 2010-08-05 04:49:34
10003
10003
Mein Probelm, nicht alle Datensätze sind doppelt. Ich möchte nun alles Datensätze, welche heute angelegt worden sind und welche doppelt sind markieren. bzw. in das Feld "Delete" eine 1 rein schreiben.
Ich wollte erst mal ein select machen, aber da scheitere ich leider schon:
SELECT [AccountNumber] FROM [tw_elektric_MSCRM].[dbo].[AccountBase]
where (SELECT COUNT(*) FROM [tw_elektric_MSCRM].[dbo].[AccountBase]
where [AccountNumber] = [AccountNumber]
group by [AccountNumber]) >1
Oder
SELECT Unterabfrage.*
FROM [
SELECT COUNT(*) As Anzahl,[AccountNumber],max(CreatedOn)
FROM [tw_elektric_MSCRM].[dbo].[AccountBase]
group by [AccountNumber]
) As Unterabfrage
WHERE Unterabfrage.Anzahl > 1
Ich hoffe ihr habt eine Idee.
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169410
Url: https://administrator.de/forum/update-unterabfrage-169410.html
Ausgedruckt am: 22.12.2024 um 21:12 Uhr
3 Kommentare
Neuester Kommentar
Hi,
das hier gibt genau das aus, was du suchst:
Gruß
das hier gibt genau das aus, was du suchst:
select distinct account,
(
select COUNT(t1.account) from Testdb..account_test t1
where t1.account = t.account
)
from Testdb..account_test t
where account in (
select t2.account from Testdb..account_test t2
group by t2.account
having COUNT(t2.account) > 1
)
Gruß
na das ist doch einfach,
Denk nur dran, du hast in deiner Tabelle Datum+Uhrzeit, wenn du auf ein
Datum vergleichst musst du ggf. je nach DBS die Zeit abschneiden mit cast(Feld as date) o.ä.
sonst findet er keinen Datensatz, weil er genau das Datum + eine exakte Uhrzeit sucht.
delte from account_test
where account in (
select distinct account,
(
select COUNT(t1.account) from Testdb..account_test t1
where t1.account = t.account
)
from Testdb..account_test t
where account in (
select t2.account from Testdb..account_test t2
group by t2.account
having COUNT(t2.account) > 1
)
AND
CreateOn='2011-07-08'
Denk nur dran, du hast in deiner Tabelle Datum+Uhrzeit, wenn du auf ein
Datum vergleichst musst du ggf. je nach DBS die Zeit abschneiden mit cast(Feld as date) o.ä.
sonst findet er keinen Datensatz, weil er genau das Datum + eine exakte Uhrzeit sucht.