sql >> Databasteknik >  >> RDS >> PostgreSQL

Inkluderar Custom SELECT-satsen i ActiveRecord-frågan

Nåväl, det här var enkelt. Använder .first var frågan. Jag antar att detta beror på att det inte finns några modellposter som returneras av frågan. Om jag adresserar resultatets 0-index direkt får jag alla mina poäng.

så den här koden fungerar:

 query = 
      Assessment.rating_attributes.collect{|attribute|
        1.upto(5).collect do |i|
        %Q{sum(CASE WHEN #{attribute.to_s} = #{i} then 1 else 0 end) as #{attribute}_score_#{i}}
      end
    }.join(', ')

Assessment.where(selection_attribute: 1038).select(query)[0]
=> #<Assessment id: nil>

Assessment.where(selection_attribute: 1038).select(query)[0].first_attribute_score_1
=> 3



  1. T-SQL få antal arbetsdagar mellan 2 datum

  2. Begränsa SQL med summan av radens värde

  3. Kontrollera om det aktuella datumet ligger mellan två datum + mysql select-fråga

  4. Hur man får to_number att ignorera icke-numeriska värden