Re: How to write a crosstab which returns empty row results

From: David Goldsmith <d(dot)l(dot)goldsmith(at)gmail(dot)com>
To:
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: How to write a crosstab which returns empty row results
Date: 2022-12-25 07:25:09
Message-ID: CAFtPsZqJGrAaFkpBjvLdA+kqk7TiHBOHu_01GfGF_pPWR8UJ+g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Here you go:

SELECT *

FROM crosstab(

'SELECT s.s_n AS Pop

, ad.a_d_y::text AS Yr

, ad.s_a_qty::text --for some Pop all of
these are null for every Yr

FROM st AS s

JOIN s_d_s AS sds ON s.s_id = sds.s_id

JOIN a_d_d AS ad ON sds.sds_id = ad.sds_id

JOIN d_t_l AS dtl ON dtl.dtl_id = sds.dtl_id

WHERE dtl.dtl_id =
''3edcb910-fc0c-49e0-be93-a93e98cb12bb''

AND s.s_id IN (

''9adfe0ee-af21-4ec7-a466-c89bbfa0f750''

,
''8714b2e3-d7ba-4494-a3ed-99c6d3aa2a9c''

,
''45ecb932-ece9-43ce-8095-54181f33419e''

,
''fa934121-67ed-4d10-84b0-c8f36a52544b''

,
''b7d5e226-e036-43c2-bd27-d9ae06a87541''

)

ORDER BY 1,2',

'SELECT DISTINCT a_d_y FROM a_d_d WHERE a_d_y BETWEEN 2017
AND 2021 ORDER BY 1')

AS final_result(Pop TEXT,

"2017" TEXT,

"2018" TEXT,

"2019" TEXT,

"2020" TEXT,

"2021" TEXT

);

A row for each one of the matching s.s_id values should be displayed, even
if all the ad.s_a_qty values for that Yr are NULL; right now, the query
works, but it only returns matching rows for which at least one year has a
non-NULL ad.s_a_qty.

Thanks in advance for your help.

On Sat, Dec 24, 2022 at 7:25 PM Brad White <b55white(at)gmail(dot)com> wrote:

> On 12/24/2022 9:03 PM, David Goldsmith wrote:
> > How do I force "empty rows" to be included in my query output? (I've
> > tried LEFT JOINing to the row header results, and using CASE
> > statements; but due to my unfamiliarity w/ using crosstab, I'm not
> > sure if I've used those correctly in the current context;
> >
> Can you give us a head start by showing the query you have now that is
> not working.
>
> Extra points if you give simple create/populate statements that
> demonstrate the problem.
>
> Hope that helps,
> Brad.
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David G. Johnston 2022-12-25 16:45:44 Re: How to write a crosstab which returns empty row results
Previous Message Brad White 2022-12-25 03:24:59 Re: How to write a crosstab which returns empty row results