2017-01-30 1 views
0

Ich möchte mehrere Zählungen auf die gleiche Tabelle setzen und die Ausgabe sollte nur in einer Tabelle als 'Name' verwendet werden.Mehrfachzählungsfunktion in einer Tabelle

select count(select count(TXN) 
from sale1 
where date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) as c1, 
count(select count(TXN) from sale1 where RESPONSE='Y' date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) as c2 
FROM sale1; 
+1

Der Versuch, die SQL zu formatieren Sie die Absicht nicht machen noch klarer. Beispieldaten und gewünschte Ergebnisse würden helfen. –

+0

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; –

+0

Ich habe das versucht, aber es zählt ganze Daten, ich will nur zählen von count (TXN) –

Antwort

0

Bitte versuchen Sie diesen Count (Distinct TXN) wird es Distinct Count das heißt doppeltes Feld gibt es einmal zählen.

0

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'