On 10/23/2019 12:28 PM, Bart Smissaert wrote:
Have a table created like this:

create table num_values(id integer,
                                          entry_date integer,
                                          term_text text,
                                          numeric_value Real)

For this problem I am only interested in the rows that have either
'Weight', 'Height' or 'BMI'
in the term_text field and I can make table that have only these values.

Now usually for a particular id and entry_date there are 3 rows for the
above mentioned 3 values for term_text, but this is not always so. So,
table date could be like this:

id  entry_date term_text, numeric_value
------------------------------------------------------
2   40100        Weight      80
2   40100        Height       170
2   40100        BMI           27.7
2   40200        Weight      90
2   40200        Height       170
2   40200        BMI            31.1
3   38000        Weight       86
4   40100        Weight       66
4   40100        Height       160
4   40100        BMI           25.8
4   40100        Weight      67

I want to run a select (or table insert) to get the data like this

id  entry_date weight  height  bmi
--------------------------------------------
2   40100        80        170      27.7
2   40200        90        170      31.1
3   38000        86
4   40100        66         160      25.8

Something along these lines, perhaps:

select id, entry_date,
  max(case term_text when 'Weight' then numeric_value else 0 end) weight,
  max(case term_text when 'Height' then numeric_value else 0 end) height,
  max(case term_text when 'BMI' then numeric_value else 0 end) bmi
from num_values
group by id, entry_date;

--
Igor Tandetnik

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to