Ich bin neu in SQL so leid, wenn ich dumm bin!SQL Distinct-Klausel funktioniert nicht?
Ich versuche, ein paar Spalten zu wählen, wo der Name nicht mehr als einmal erscheint, aber die Verwendung der distinct-Klausel tut dies aus irgendeinem Grund nicht?
Hier ist meine Frage:
SELECT DISTINCT A.fldContactName, A.fldsignonlinesetup, B.fldorderdate, A.fldemail
FROM tblcustomers AS A
LEFT JOIN tblorders AS B ON A.fldcustomerid = B.fldcustomerid
WHERE B.fldorderdate BETWEEN '2013-01-01' AND '2016-12-31'
AND A.fldemail <> 'NULL' AND A.fldcontactname <> 'NULL' AND A.fldcontactname <> ''
AND A.fldemail <> ''
AND A.fldsignonlinesetup = 0
ORDER BY A.fldcontactname ASC
Wie kann ich es nur zeigen Aufzeichnungen erhalten, die einzigartig sind z.B. Kontakt Name John Smith kommt nur einmal auf?
Erwartetes Ergebnis:
fldContactName: fldEmail: fldSignOnlineSetup: fldOrderDate:
James Smith [email protected] 0 2016-08-14
Bill Plant [email protected] 0 2015-02-24
tatsächliche Ergebnis:
fldContactName: fldEmail: fldSignOnlineSetup: fldOrderDate:
James Smith [email protected] 0 2016-08-14
Bill Plant [email protected] 0 2015-02-24
James Smith [email protected] 0 2014-06-20
Geben Sie Beispieldaten und erwartetes Ergebnis an. – Viki888
Meinst du wirklich 'fldemail <> 'NULL'' oder meinst du' A.fldemail IST NICHT NULL'? Ihre Version ist ein String-Vergleich zu einer Zeichenfolge mit vier Buchstaben. Die zweite überprüft, dass der Wert nicht "NULL" ist. –
Distinct ist auf allen Feldern verschieden, nicht nur eins. Wenn nur ein Datensatz pro Name angezeigt werden soll, müssen Sie die Geschäftsregeln kennen, mit denen Sie verknüpfte Datensätze ausschließen können, oder Sie müssen die Werte verwandter Datensätze in ein Feld verketten. Da Benutzer wahrscheinlich mehr als eine Bestellung haben, ist dies unwahrscheinlich dass Sie immer nur eine Zeile pername haben und Ihre Geschäftsregeln erfüllen, es sei denn, Sie möchten nur die erste oder die letzte Bestellung. – HLGEM