I have a table-A, which is having five columns namely ID, x, y, z and Info. Need to find out Info column calculation based on remaining columns in the table

please find the table-A structure below:
ID x y z Info


1 1 1 0 dog

1 0 1 0 cat

1 1 1 1 rat

1 0 1 1 mouse

1 0 0 0 none

2 1 1 1 green

2 0 1 0 yellow

2 0 0 0 red

3 0 1 1 sun

3 1 1 0 mon

4 0 1 1 kill

Required logic :

above table needs to be group by using ID column &

Step-1: if x=1, y=1 and z=0 then take info value, else go to step-2

Step-2: if x=0, y=1 and z=0 then take info value, else go to step-3

Step-3: Other than above steps, we need to put null as info value

and required output mentioned in below

ID Info


1 dog

2 yellow

3 mon

4 Null

select top(1) with ties
       id
      ,case
          when (x=1
           and  y=1
           and  z=0
               )
            or (x=0
           and  y=1
           and  z=0
               )
          then info
          else null
       end as info
  from [table-a]
 order by row_number() over(partition by id
                                order by case
                                            when x=1
                                             and y=1
                                             and z=0
                                            then 0
                                            when x=0
                                             and y=1
                                             and z=0
                                            then 1
                                            else 2
                                         end
                           )
;
1 Like
Select Top (1) With ties
	id,
	Choose(y&(y^z), info)
From #temp
Order By ROW_NUMBER() Over (Partition By Id Order By y Desc, z Asc,x Desc)
1 Like

Assuming that x can be only 0 or 1, then all you really need is:

case when y=1 and z=0 then info else null end as info

I thought that at first, but the value of info you need depends on the value of x so you need to order the rows carefully to get the correct results.