2017-06-21 2 views
0

ich eine Tabelle wie folgt aus:Sollte eine einzelne Spaltenwert zurück, wenn die gesamte Spalte Wert in mysql nicht gleich sind

+------+ 
|Status| 
+------+ 
|2  | 
+------+ 
|1  | 
+------+ 
|2  | 
+------+ 
|2  | 
+------+ 
|2  | 
+------+ 

In dieser Tabelle die Spalte mit dem Namen Status hat einen anderen Wert, die es 1 so ist Rückkehr mich mit einem Wert PENDING sonst, wenn alle der Statuswert sind 2 dann sollte es zurückgeben einzelne Spalte Status mit einem Wert ABGESCHLOSSEN

Ausgabe aussehen sollte dieses

+------+ 
|Status | 
+------ + 
|Pending| 
+-------+ 
+0

können Sie diese Tabellen mit Formatierung hinzufügen? –

+0

Müssen Sie dies nur mit 'SQL' tun? –

+0

Ja in MYSQL muss ich tun – Amit

Antwort

0
eine einzelne Spalte Status sollte

Versuchen Sie die obige Abfrage.

Hoffe, das wird helfen.

-1

Ich denke, unter Abfrage könnte Ihnen helfen: -

select 
CASE WHEN count(*) = 0 then 'COMPLETED' 
ELSE 'PENDING' END 
from testing where status in ('1'); 
+0

Wenn es Datensatz mit dem Status '3,4,5, ..' gibt Ihre Abfrage wird nicht funktionieren. –

+0

Stimmen Sie mit Ihrem Punkt überein. Aber wir können die Abfrage mit unseren Anforderungen ändern. –

+0

@VivekSharma, wenn ich mehrere Statuscode habe und das Ergebnis sollte abgeschlossen sein, wenn alle Wert 2 ist? – Amit

2

Überprüfen Sie die Anzahl der verschiedenen Status (1 ausgenommen) auf nicht mehr als 0:

SELECT CASE WHEN COUNT(*) > 0 THEN 'PENDING' ELSE 'COMPLETED' END AS 'Status' FROM (
    SELECT DISTINCT status FROM yourtable WHERE status != 1 
) a; 
0

Da Sie angegeben haben, dass die nur zwei mögliche Werte in Ihrem Datensatz sind 1 & 2, können Sie die folgende Abfrage ausführen, um das gewünschte Ergebnis zu erhalten.

Hinweis: Ich gehe hier davon aus, dass 2s für abgeschlossene Werte und 1s für ausstehende Werte sind. Daher sollte die Summe aller Zeilen gleich "Nein" sein. der Zeilen x 2, wenn alle abgeschlossen sind. Andernfalls bedeutet dies, dass ein nicht übereinstimmender Wert vorhanden ist (der 1 ist)

SELECT 
    CASE 
     WHEN count(status) * 2 = SUM(status) THEN 'COMPLETED' 
     ELSE 'PENDING' 
    END AS status 
FROM my_table; 
Verwandte Themen