Home > database >  looking for help in existing query to removing the duplicate
looking for help in existing query to removing the duplicate

Time:11-01

i have the below table

item area qty
item 1 a 10
item 1 b 17
item 2 b 20
item 3 a 10
item 2 c 8

am looking to have a result in sql as below ( a unique item and a unique area ) :

item area a area b area c
item 1 10 17 0
item 2 0 20 8
item 3 10 0 0

i do have this query which not giving me what am looking for if the area has been changed or increased also its for 2 columns table not 3 columns:

select 
    item, 
    max(case when seqnum = 1 then area end) as area_1, 
    max(case when seqnum = 2 then area end) as area_2, 
    max(case when seqnum = 3 then area end) as area_3 
from (
    select A.*, 
        row_number() over (partition by item order by area) as seqnum 
    from A 
) A 
group by item;

Looking forwards to your kind help

i try to modify the existing query, looking for help to modify and undestand what i was missing to have more knowlage for the furture

CodePudding user response:

If you have a fixed list of areas, then no need for window functions ; you can explicitly filter on each individual value in max().

Another fix to your query is to take the max of qty rather than of area (whose value is already filtered).

select item, 
    coalesce(max(case when area = 'a' then qty end), 0) as area_a,
    coalesce(max(case when area = 'b' then qty end), 0) as area_b, 
    coalesce(max(case when area = 'c' then qty end), 0) as area_c
from mytable 
group by item
  • Related