2017-07-01 3 views
4

Ich habe einen persönlichen Pseudocode geschrieben, um anderen zu helfen, zu verstehen, was ich versuche zu erreichen. Ich bin ein Anfänger in SQL, aber ich kenne alle Grundlagen, gerade nicht erfahren genug mit den Möglichkeiten.SQL - Wie die richtige Nummer

Ich habe versucht, SELECT CASE, aber es erreicht nicht, was ich brauche.

Hier meine Beispieldaten

ist
CREATE TABLE Records 
    ([ColA] INTEGER, [ColB] INTEGER, [ColTotal] INTEGER) 
; 

INSERT INTO Records 
    ([ColA], [ColB]) 
VALUES 
    ('3', '4'), 
    ('4', '2’), 
    ('1', '2'), 
    ('3', '5'), 
    ('3', '1'), 
    ('2', '2') 
; 

Hier mein Pseudo-Code ist (ich fand Antwort nach akzeptiert, dass meine Logik in der psuedo falsch war zu. Dies wurde behoben)

SELECT COL A, COL B, COL TOTAL 
IF COL A >= COLB THEN 
ADD COLB value to COL TOTAL 
ELSE 
USE Value from COLA and add to total 
END IF 

Hier ist mein SQL

SELECT SUM(ColTotal) 
FROM t 
WHERE ColA >= ColB 
+2

Beispieldaten ist besser als Pseudo-Code. Markieren Sie die von Ihnen verwendete Datenbank. –

Antwort

3

Ist das, was Sie wollen?

select sum(case when a < b then a else b end) as total 
from t; 

Viele Datenbanken unterstützen die least() Funktion, die dies einfacher macht:

select sum(least(a, b)) as total 
from t; 
+1

vielen dank, fast perfekte antwort. wähle Summe (Fall wenn a> = b dann b sonst ein Ende) als Summe von t; Ich musste nur die Logik in Ihrem SQL umtauschen, um meine gewünschte Antwort zu erhalten. Ich werde dies als angenommene Antwort genehmigen, da es meine Frage beantwortet hat. Nochmals vielen Dank, dass Sie Ihr Fachwissen und Ihre Erfahrung in diesem Bereich weitergegeben haben. Ich habe 6 Stunden gebraucht, um mit dem zu arbeiten, was ich habe. w3school und dummy SQL Server, den ich viele SQL-Anweisungen im Internet lese, die für mich nicht zutreffen. – user8242530