Von dem, was ich aus Ihrer Frage verstehen Sie mehrere Zählungen über Daten derselben Tabelle machen wollen, nehme ich diese zwei:
select count(TXN)
from sale1
where date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY));
und
select count(TXN) from sale1
where RESPONSE='Y'
and date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY);
Ihre Anfrage scheint nicht zu korrekt sein, und es scheint, dass Sie die count
über eine neue Abfrage verwenden möchten: count(select ...)
aber Sie können nicht, count
arbeitet über eine Liste von Zeilen der aktuellen Tabelle.
Man könnte dies die verschiedene Anzahl Spalten in derselben Ausgabe zu tun haben wollen:
select sum(case when response='y' then 1 else 0 end) as yes_count,
sum(case when date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY) then 1 else 0 end) as day_interval_count
from sale1
where response='y'
Hier verwende ich case when .. then .. end
entweder eine 1 oder 0 auf dem Zeilenwert zu generieren, dann mit Summe, die wir tun die Zählung.
Eine andere Möglichkeit ist, mehrere Abfragen zu machen, die Sie mit union
kombinieren könnten zwei Reihen zu erstellen:
select count(x) as count
from sale1
where response='y'
union
select count(x) as count
from sale1
where response='n'
Der Versuch, die SQL zu formatieren Sie die Absicht nicht machen noch klarer. Beispieldaten und gewünschte Ergebnisse würden helfen. –
Wählen Sie count (Fall wenn Datum (SALEDATE) = DATUM (DATE_SUB (NOW(), INTERVALL 1 TAG)) dann 1 else 0 Ende) AS count1, count (Fall wenn RESPONSE = 'Y' und Datum (SALEGDATE) = DATUM (DATE_SUB (JETZT(), INTERVALL 1 TAG) dann 1 else 0 Ende) AS count2 aus dem Verkauf; –
Ich habe das versucht, aber es zählt ganze Daten, ich will nur zählen von count (TXN) –