AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TSQL Compact .Net 3.5

Ein Thema von ferby · begonnen am 2. Sep 2013 · letzter Beitrag vom 2. Sep 2013
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

TSQL Compact .Net 3.5

  Alt 2. Sep 2013, 16:17
Datenbank: Compact .Net • Version: 3.5 • Zugriff über: TSQL
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
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#2

AW: TSQL Compact .Net 3.5

  Alt 2. Sep 2013, 17:08
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
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#3

AW: TSQL Compact .Net 3.5

  Alt 2. Sep 2013, 17:12
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
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: TSQL Compact .Net 3.5

  Alt 2. Sep 2013, 21:42
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)

Geändert von Furtbichler ( 3. Sep 2013 um 08:08 Uhr) Grund: CAST vergessen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 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