Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TSQL Compact .Net 3.5 (https://www.delphipraxis.net/176400-tsql-compact-net-3-5-a.html)

ferby 2. Sep 2013 15:17

Datenbank: Compact .Net • Version: 3.5 • Zugriff über: TSQL

TSQL Compact .Net 3.5
 
Hallo alle,

ich habe ein Problem mit dem ich seit Stunden kämpfe :-(
Das Hauptproblem ist, dass ich MS Compact .Net 3.5 verwenden muss.

Und zwar:

Ich habe eine Tabelle die so aussieht:

Attribute 1
Attribute 2
Attribute x
Timestamp y

Ohne einen PK.
Ich soll nun alle Zeilen löschen, bei denen alle Attribute gleich sind und der Timestamp innerhalb 60 Sekunden gleich ist. Nur die erste Zeile soll aufgehoben werden.

Zum Beispiel
A, B, C, 02.09.2013 16:06:30
A, B, C, 02.09.2013 16:06:35
A, B, C, 02.09.2013 16:06:30
A, B, X, 02.09.2013 16:06:30
A, B, C, 02.09.2013 16:06:20
A, B, Y, 02.09.2013 16:06:30

Soll ergeben
A, B, X, 02.09.2013 16:06:30
A, B, C, 02.09.2013 16:06:20
A, B, Y, 02.09.2013 16:06:30



Bis jetzt habe ich das mit CTEs oder Cursor gelöst, beides in SQL Compact nicht verfügbar.

Hat jemand eine Idee?

lg,
Ferby

Mikkey 2. Sep 2013 16:08

AW: TSQL Compact .Net 3.5
 
Vorschlag:

Code:
Delete from table as t1
 where exists
   select .. from table as t2 where t1.a1=t2.a1 and ...
   and t1.timestamp > t2.timestamp and
   <zur Minutengleichheit fällt mir gerade nichts ein>
Gruß, Mikkey

jensw_2000 2. Sep 2013 16:12

AW: TSQL Compact .Net 3.5
 
Das wird schwer oder unmöglich.

Kannst Du die Daten nicht per Delphi abfragen und "WHILE NOT QUERY.EOF DO..." auswerten?
Das könnte man in ein paar Minuten zusammentippen :)

Furtbichler 2. Sep 2013 20:42

AW: TSQL Compact .Net 3.5
 
Man kann das sehr einfach so lösen:
Code:
select distinct
  Attribute1,
  Attribute2,
  AttributeX,
  min(TimeStampY) as TimeStampY,
  trunc(cast(TimeStampY as float)*1440) as GroupValue
into #tmp
from MyTable
group by trunc(cast(TimeStampY as float)*1440)

truncate table MyTable

insert into MyTable
  select
    Attribute1,
    Attribute2,
    AttributeX,
    TimeStampY
  from #tmp
drop table #tmp
Ungetestet, sollte aber funzen (wenn SQL-Compact das kann)

PS: Das mit der 1.Zeile würde auch gehen. Aber da müsste ich kurz nachdenken (ginge mit ROWNUMBER)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz