2016-09-05 2 views
-1

Ich versuche einen Weg zu finden, nur Spalten zu zeigen, die einen Wert irgendwo in ihnen haben. Aber da meine DB Dutzende von Spalten enthält, möchte ich nicht im Voraus angeben, welche Spalten ich brauche. Ich bin für eine Abfrage suchen wie:SQL-Abfrage zum Entfernen aller vollständig leeren Spalten

select * from table_name where column_has_non_null_data_somewhere 

Beispiel:

enter image description here

Dank

+0

Eine SQL-Abfrage hat eine feste Anzahl von Spalten, die in der SELECT-Klausel definiert sind. Wenn Sie eine variable Anzahl von Spalten haben möchten, müssen Sie dynamisches SQL verwenden. –

+2

Ich würde darüber nachdenken, die db neu zu gestalten. – jarlh

+0

Können Sie uns sagen, wie Ihre Ausgabe aussehen soll? –

Antwort

1

Sie unten Art und Weise versuchen könnten Spalten mit allen leeren oder Null-Werte zu eliminieren.

Angenommen, Sie haben;

SELECT * FROM Filter 

Ausgang:

A  B  C  D 
NULL NULL NULL NULL 
NULL 1  NULL NULL 
NULL 1  NULL NULL 
NULL 1  NULL NULL 
1  1  0  NULL 

Versuchen:

IF ((SELECT COUNT(A) FROM Filter) < 1) 
    SELECT B, C, D FROM Filter 
ELSE IF ((SELECT COUNT(B) FROM Filter) < 1) 
    SELECT A, C, D FROM Filter 
ELSE IF ((SELECT COUNT(C) FROM Filter) < 1) 
    SELECT A, B, D FROM Filter 
ELSE IF ((SELECT COUNT(D) FROM Filter) < 1) 
    SELECT A, B, C FROM Filter 

Ausgang:

A  B  C 
NULL NULL NULL 
NULL 1  NULL 
NULL 1  NULL 
NULL 1  NULL 
1  1  0 
+0

Hey @Reyan, danke für Ihre Antwort. Wie ich in der ursprünglichen Frage erwähnt habe, suche ich nach einer Möglichkeit, den Filter anzuwenden, ohne die Spaltennamen anzugeben, da meine Tabelle eine große Anzahl von Spalten enthält. –

+0

Noch nicht @Reyan. –

Verwandte Themen