Topic: Вычислительное поле

Имеется следующее вычислительное поле:
(case when strftime('%m',birth) = '01' then 566/31
      when strftime('%m',birth) = '02' then 566/28   
      when strftime('%m',birth) = '03' then 566/31     
      when strftime('%m',birth) = '04' then 566/30 
      when strftime('%m',birth) = '05' then 566/31     
      when strftime('%m',birth) = '06' then 566/30
      when strftime('%m',birth) = '07' then 566/31
      when strftime('%m',birth) = '08' then 566/31
      when strftime('%m',birth) = '09' then 566/30   
      when strftime('%m',birth) = '10' then 566/31     
      when strftime('%m',birth) = '11' then 566/30 
      when strftime('%m',birth) = '12' then 566/31     
end)

Как быть если год високосный? Как написать выч. поле?

Re: Вычислительное поле

К сожалению не совсем понимаю, какая цель данного вычисляемого поля, и что значит 566?

Dmitry.

Re: Вычислительное поле

Скажем есть завод, у которого имеется несколько цехов, и у каждого цеха имеется план работы на месяц. В данном примере 566 это план работы определенного цеха, т.е. независимо от количество дней в месяце данный цех должен проработать 566.

Re: Вычислительное поле

попробуйте так, но не тестировал

(case when strftime('%m',birth) = '01' then 566/31 
      when strftime('%m',birth) = '02' then 566 / (CASE (julianday(birth, 'start of year', '+1 year') - julianday(birth, 'start of year')) WHEN 366 THEN 29 ELSE 28 END)
      when strftime('%m',birth) = '03' then 566/31     
      when strftime('%m',birth) = '04' then 566/30  
      when strftime('%m',birth) = '05' then 566/31      
      when strftime('%m',birth) = '06' then 566/30
      when strftime('%m',birth) = '07' then 566/31 
      when strftime('%m',birth) = '08' then 566/31 
      when strftime('%m',birth) = '09' then 566/30   
      when strftime('%m',birth) = '10' then 566/31     
      when strftime('%m',birth) = '11' then 566/30  
      when strftime('%m',birth) = '12' then 566/31      
 end)
Dmitry.