Re: Solving my query needs with Rank and may be CrossTab - Mailing list pgsql-sql

From Rob Sargent
Subject Re: Solving my query needs with Rank and may be CrossTab
Date
Msg-id CC0E128E-79ED-4AC0-9FD0-D6C0F12C9859@gmail.com
Whole thread Raw
In response to Solving my query needs with Rank and may be CrossTab  (Iaam Onkara <iamonkara@gmail.com>)
Responses Re: Solving my query needs with Rank and may be CrossTab
List pgsql-sql


On Dec 1, 2019, at 3:54 PM, Iaam Onkara <iamonkara@gmail.com> wrote:

Hi Friends,

I have a table with data like this gist https://gist.github.com/daya/d0794efcd4278fc5dce6e7339d03a8fd and I want to fetch the latest values for a given set of attributes so the result set looks like this gist https://gist.github.com/daya/0cb7f8682520a1dd4cdda8c0266f77f6

Please note in the desired result set 
  1. There is an assumed mapping of Code to display i.e. code 39156-5 is BMI.
  2. "Oxygen Saturation" has only one value and "Pulse" has no value
In my attempts and with some help I have  this query 

with v_max as
(SELECT
code, uom, val, created_on, dense_rank() over ( partition by code order by created_on desc) as r
FROM vitals v
where (v.code = '8480-6' or v.code='8462-4' or v.code='39156-5' or v.code='8302-2')
)
SELECT c.display, uom, val, created_on
from v_max v inner join codes c on v.code=c.code
where r = 1; 

which gives this result 

But the result set that I want I am unable to get. Or if is it even possible to get?

Thanks for your help


I take it the last value by timestamp per code per patient is the one to be reported? Or is there a time window?
Turning rows into columns can be done with sub-selects per derived column or (usually faster) temporary tables built up in separate selects with each adding usually one column (but possibly more).

pgsql-sql by date:

Previous
From: Iaam Onkara
Date:
Subject: Solving my query needs with Rank and may be CrossTab
Next
From: Iaam Onkara
Date:
Subject: Re: Solving my query needs with Rank and may be CrossTab