SELECT DISTINCT (SQL-Expr)

Alfred_

Erfahrenes Mitglied
Hi,
ich bin gerade dabei ein VB6 Programm zu konvertieren und "brüte" derzeit über ein Select-Problem. Und zwar erhalte ich beim nachfolgenden Syntax die Fehlermeldung:
"Falsche(sic!) Syntax in der Nähe von ')' und zeigt dabei auf "ExecuteScalar.
Code:
Dim txtKombi As New SqlCommand("SELECT COUNT(*) FROM (SELECT DISTINCT[Datum] FROM [Tabelle1])", sqlconn)
Was ist da falsch, denn bei VB6 kommt die richtige Rückmeldung
Mit dem nachfolgenden Syntax kommt erfreulicherweise die richtige Anzeige und keine Fehlermeldung.
Code:
Dim n As Integer
    Dim txtKombi As New SqlCommand("SELECT COUNT(*) FROM [Tabelle1]", sqlconn)
    n = CInt(txtKombi.ExecuteScalar())
    txtAnzKombi.Text = CStr(n)
    txtKombi.Dispose()
Da ich nur Kofler's Buch 'Visual Basic 2005' besitze und mir die F1-Hilfe auch nicht wirklich weiter bringt, hoffe ich auf einen entsprechenden Tipp.
Grüße
 
Subselects müssen normalerweise benannt werden.

Versuch mal:

SQL:
SELECT COUNT(*) FROM (SELECT DISTINCT[Datum] FROM [Tabelle1]) AS t

Wenn deine Datenbank das unterstützt kannst du auch mal ein:
SQL:
SELECT COUNT(DISTINCT [Datum]) FROM [Tabelle1]
versuchen.
 
Hi,
ich danke Dir außerordentlich.
In den letzten Taben durchstöberte ich alle Archive und bin dabei immer nur auf Lösungsprobleme die eine Anzahl von gleichen Datensätzen angezeigt wissen wollten.
Ich hingegen wollte nur die Summe aller gleichen Datensätze herausfiltern.
Irgendwo habe ich gelesen, dass MSSql zum Unterschied von VB6 nur mit einer AS Klausel funktioniert. Daraufhin habe ich über Versuch und Irrtum am Syntax gebastelt.
Meine sehr schwer erarbeitete Lösung wird durch Deinen Tipp untermauert. Sie lautet:
Code:
Dim anzkombi As New SqlCommand( _
    "SELECT COUNT(*) FROM (SELECT DISTINCT[Datum] FROM [Tabelle1]) AS txtkombi", sqlconn)
Nochmals herzlichen Dank
 
Zurück