date - SQL get the latest record -
i struggeling here pull out 2 results table. have table different types, items , values added on different dates.
type item value date 1 10 111 20160101 1 10 122 20170101 1 11 222 20170101 1 12 312 20170101 2 10 144 20160101 2 10 155 20170101 2 11 105 20160101 2 11 133 20170101 2 11 123 20180101 3 10 111 20170101
first lastest date, show on combination of type, item. have tried query, show me dates.
select type, item, value, max(date) date tablename type='1' or type='2' group type, item, value
below like.
type item value date 1 10 122 20170101 1 11 222 20170101 1 12 312 20170101 2 10 155 20170101 2 11 123 20180101
then have more tricky question, here totally lost , not sure if possible, or maybe should in other way? see if item type 1 has value, while type 2 has not. or other way around. displayed in new table.
item type1 type2 date 10 1 2 20170101 -> item 10 has values both type 1,2 on specific date 11 1 20170101 -> item 11 has value when type 1 on specific date 11 2 20180101 -> item 11 has value when type 2 on specific date 12 1 20170101 -> item 12 has value when type 1 on specific date
for first question think can use:
select a.type, a.item, a.value, a.date tablename inner join on (select type, item, max(date) maxdate tablename group type, item) b on a.type = b.type , a.item = b.item , a.date=b.maxdate a.type='1' or a.type='2'
for second try this:
select distinct a.item, b.type type1, c.type type2, case when b.type not null b.dat else c.dat end date_x (select item, type, max(date) dat item group item, type) left join (select item, type, max(date) dat item type='1' group item, type) b on a.item = b.item , a.dat= b.dat left join (select item, type, max(date) dat item type='2' group item, type) c on a.item = c.item , a.dat= c.dat
output :
item type1 type2 date_x 1 10 1 2 20170101 2 11 null 2 20180101 3 11 1 null 20170101 4 12 1 null 20170101
Comments
Post a Comment