Hallo,
Ik ben bezig een aantal MySQL-queries om te zetten naar SQLite. Dat gaat prima, er zijn minder verschillen dan ik eerst verwachtte. maar met het volgende sql gedeelte kom ik er even niet uit:
Oude MySQL versie:
, IF(IF(ROUND(w_s2_car/w_s2_temaken*100,3) >= 100 AND ROUND(w_s1_car/w_s1_temaken*100,3) >= 100, 1,
IF(ROUND(w_s2_car/w_s2_temaken*100,3) = ROUND(w_s1_car/w_s1_temaken*100,3), 1,
IF(ROUND(w_s2_car/w_s2_temaken*100,3) > ROUND(w_s1_car/w_s1_temaken*100,3) AND ROUND(w_s2_car/w_s2_temaken*100,3) >= 100, 2, 0)))=2, 1, 0) AS winst
Omgezet naar CASE ipv IF (SQLite kent geen IF):
, IF(COALESCE(CASE WHEN ROUND(w_s2_car/w_s2_temaken*100,3) >= 100 AND ROUND(w_s1_car/w_s1_temaken*100,3) >= 100 THEN 1 ELSE NULL END,
CASE WHEN ROUND(w_s2_car/w_s2_temaken*100,3) = ROUND(w_s1_car/w_s1_temaken*100,3) THEN 1 ELSE NULL END,
CASE WHEN ROUND(w_s2_car/w_s2_temaken*100,3) > ROUND(w_s1_car/w_s1_temaken*100,3) AND ROUND(w_s2_car/w_s2_temaken*100,3) >= 100 THEN 2 ELSE 0 END) =2, 1, 0) AS winst1
Het bovenstaande werkt in MySQL, maar om ook in SQLite te werken moet de laatste IF nog worden omgezet.
Ik dacht er nog een CASE (zie hieronder) omheen te zetten, maar dan krijg ik een syntax error (near THEN)
, CASE(COALESCE(CASE WHEN ROUND(w_s1_car/w_s1_temaken*100,3) >= 100 AND ROUND(w_s2_car/w_s2_temaken*100,3) >= 100 THEN 1 ELSE NULL END,
CASE WHEN ROUND(w_s1_car/w_s1_temaken*100,3) = ROUND(w_s2_car/w_s2_temaken*100,3) THEN 1 ELSE NULL END,
CASE WHEN ROUND(w_s1_car/w_s1_temaken*100,3) > ROUND(w_s2_car/w_s2_temaken*100,3) AND ROUND(w_s1_car/w_s1_temaken*100,3) >= 100 THEN 2 ELSE 0 END ) =2 THEN 1 ELSE 0) AS winst
Wie ziet de fout?
Alvast bedankt
Bauke