I have a sql table in which below are the columns. I'm using sql server.
Id | name | isActive | device |
---|---|---|---|
1 | Motorola | 1 | phone |
1 | Motorola | 0 | tablet |
Need to have a SQL query for below scenario:
I want to display firstdevice
, seconddevice
columns below based on isActive
column. If isACTIVE
is 1
then, fill the device name in firstdevice
column, if isActive
is 0
then fill the device name in secondDevice
.
Id | name | firstDevice | secondDevice |
---|---|---|---|
1 | Motorola | phone | tablet |
CodePudding user response:
I assume you have only maximum 2 rows per id and name
select id, name,
MAX(DECODE(isActive, 1, device)) AS firstDevice,
MAX(DECODE(isActive, 0, device)) AS secondDevice
from table
group by
id, name;
CodePudding user response:
select id, name,
MAX(CASE when isActive = 1 then device end) AS firstDevice,
MAX(CASE when isActive = 0 then device end) AS secondDevice
from table
group by
id, name