Iterieren Sie durch jede Reihe und schaffen Sie einen neuen Tisch

Angenommen, ich habe folgende Tabelle T1 :

 | col1 | col2 | col3 | |------|------|------| | 0 | 1 | 1 | // 1 | 1 | 0 | 1 | // 1 | 0 | 1 | 0 | // 0 

Ich muss jetzt jede Zeile iterieren, eine neue Tabelle T2 erstellen und sie mit einer 1 bevölkern, wann immer zwei in einer Reihe in T1 .

So würde der neue Tisch T2 aussehen:

 | res | |-----| | 1 | | 1 | | 0 | 

Sollte ich wirklich durch jede Zeile, wie hier beschrieben, iterieren, oder gibt es einen effizienteren path?

   

Du kannst die "1" s addieren. Angenommen, jede Spalte ist entweder 0 oder 1 (wie in der Frage):

 select (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res from t1; 

Add into t2 nach der select wenn Sie wirklich wollen, eine andere Tabelle.

Anmerkung: SQL-Tabellen und Ergebnismengen stellen ungeordnete Sets dar (es sei denn, es gibt eine order by für die Erstellung einer Ergebnismenge). Wenn Sie also eine neue Tabelle erstellen, werden die Zeilen ungeordnet und entsprechen nicht den Originaldaten. Sie können einfach eine Abfrage wie folgt:

 select t1.*, (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res from t1;