2017-11-24 8 views
1

Hinzufügen habe ich eine Tabelle 15 Zeilen und einer der Spalten enthält, enthält entweder Ja oder Neininsgesamt bis zum Ende jeder Zeile

Was ich versuche, eine Gesamt Spalte am Ende meiner zu tun ist hinzuzufügen Wählen Sie * Abfrage, die die Anzahl der Ja-Ergebnisse für jede Zeile mit einem Ja und die Anzahl der Nein-Ergebnisse für jede Zeile mit einer Nr.

setzt. Es gibt 8 Zeilen mit einem Ja und 7 mit einem Jetzt. Also würde ich erwarten, dass jede Zeile, die ein Ja in diesem bestimmten Feld enthält, die Nummer 8 in der letzten Spalte und 7 für jede Nr.

Ich bin mir nicht sicher, ob ich das besonders gut erklärt habe, aber hier ist das, was ich bisher:

SELECT *, 
COUNT(Approved) OVER() as 'Count_Approved' 
FROM 
Approvals 

, die mir insgesamt 15 in jeder Zeile gibt, so dass ich etwas ziemlich einfach hier fehlt.

Sorry über die Formatierung auch, ich bin mir nicht sicher, wie man es schön aussehen lässt.

Prost

CJ

Antwort

0

Sie können versuchen, auf der Approved Säule mit einer Trennwand zu zählen:

SELECT *, 
    COUNT(Approved) OVER (PARTITION BY Approved) AS Count_Approved 
FROM 
    Approvals 
ORDER BY 
    Site_Code; 

Sie haben uns gesagt nie, welche Datenbank Sie verwenden, aber die oben ist ANSI SQL und sollte in den meisten Datenbanken funktionieren.

+0

Dank Tim. Ja, es ist SQL 2008. Diese Abfrage funktioniert ein Leckerbissen, aber das einzige Problem ist jetzt, dass es jetzt von den Count_Approved Ergebnissen bestellt wird - so habe ich die 7 Keine Zeilen dann die 8 Ja Zeilen. Ich brauche sie in ihrer ursprünglichen Reihenfolge. – CJD

+0

@CJD Welche Spalte (n) definiert die ursprüngliche Reihenfolge? –

+0

Site_Code Ich weiß, ich kann einfach eine Bestellung machen, aber gibt es einen Weg, es ohne zu tun? – CJD

0

nicht klar, was Sie suchen, aber meine Vermutung ist,

select Approved, count(Approved) over (PARTITION BY Approved) [Count] from Approvals 

Ergebnis:

Approved Count 
Now   2 
Now   2 
Yes   3 
Yes   3 
Yes   3 
+0

Vielen Dank @Yogesh Sharma. – CJD