Mam dość skomplikowany case
oświadczenie, że pracuje w MySQL:Pisanie złożonej instrukcji case w Sequel?
SELECT # rest of code omitted
CASE WHEN code = 'a' THEN 'x'
WHEN code IN ('m', 'n') THEN 'y'
WHEN class IN ('p', 'q') AND amount < 0 THEN 'z'
ELSE NULL END AS status
FROM # rest of code omitted
Jednak wszystkie próby napisać to w Sequel zawiodły. Używam tego jako szablonu:
Sequel.case([[:c, 1], [:d, 2]], 0) # (CASE WHEN "c" THEN 1 WHEN "d" THEN 2 ELSE 0 END)
(od Jeremy Evans' Github)
Mój najlepszy przypuszczenie byłoby:
dataset.select(# rest of code omitted...
[[(:code => 'a'), 'x'],
[(:code => 'b'), 'y'],
[(:class => ['p', 'q'], :amount < 0), 'z']].case(nil).as(:status))
pomysłów?
Czy zapytałeś w [Sequel-talk] (https://groups.google.com/forum/?fromgroups#!forum/sequel-talk)? To tam spędzają czas Jeremy Evans i guru. –