zähle nicht gehorchen wo klausel

hallo hilfe bitte verwirrt …

Ich habe diese Abfrage, die annehmen, um nur die Zählungen für die typei Spalte herauszuziehen, aber wenn ich es laufe, zieht es die Zählung für die gesamte database heraus und befolgt nicht die wo Klauselregel …

SELECT [type], typei, vtdate, count (typei) as count FROM vtindex where typei is not null or typei <> '#' and vtdate between '2016/06/01' and '2016/06/30' GROUP BY [type], Typei, vtdate HAVING COUNT(typei) > 1 

Die Idee ist, dass der Benutzer einen datesspam einfügt und ihnen die Anzahl der Typi für diesen bestimmten datesspam gibt

Vielen Dank…

Probier diese:

 SELECT [type], typei, count (typei) as count FROM vtindex where typei is not null or typei <> '#' and vtdate between '2016/06/01' and '2016/06/30' GROUP BY [type], Typei HAVING COUNT(typei) > 1 

Idee ist, andere Felder als Typi und Gruppe zu entfernen.

Viel Glück!

In der GROUP BY – Klausel muss es nur die Spalten geben, die du gruppieren willst, nicht die, die du zählen oder summen möchtest. Also versuch es mit:

 SELECT [type], vtdate, count(typei) as count FROM vtindex WHERE typei IS NOT NULL OR typei <> '#' and vtdate between '2016/06/01' and '2016/06/30' GROUP BY [type], vtdate HAVING count(typei) > 1 

Fügen Sie Klammer hinzu, um die datasätze ordnungsgemäß zu filtern.

Derzeit wird die Klausel in folgender Reihenfolge validiert

 Where typei IS NOT NULL OR (typei <> '#' and vtdate between '2016/06/01' and '2016/06/30') 

Aber das brauchst du

 Where (typei IS NOT NULL OR typei <> '#') and vtdate between '2016/06/01' and '2016/06/30' 

Ich denke, es sollte so sein;)

 SELECT [type], typei, vtdate, count (typei) as count FROM vtindex where (typei is not null or typei <> '#') and vtdate between '2016/06/01' and '2016/06/30' GROUP BY [type], Typei, vtdate HAVING COUNT(typei) > 1 

Ohne diese Klammern, wenn typei nicht null ist, werden die anderen Bedingungen nicht berechnet.