SQL unpivot of multiple columns
I would like the following wide table to be unpivotted but only where a user has a true value against the field, along with the appropriate date (please see image for a cleaner version: https://i.stack.imgur.com/9utkN.png).
Current State:
CUSTOMER_ID | First_Party_Email | Third_Party_Email | First_Party_Email_Date | Third_Party_Email_Date |
---|---|---|---|---|
40011111 | 1 | 1 | 2021-01-22 04:38:00.000 | 2021-01-17 06:38:00.000 |
50022222 | NULL | 1 | NULL | 2021-01-18 04:38:00.000 |
80066666 | 1 | NULL | 2021-01-24 05:38:00.000 | NULL |
_______________ | _______________________ | _______________________ | _______________________________ | _______________________________ |
Required State:
Customer_ID | Type | Value | Date |
---|---|---|---|
40011111 | First_Party_Email | 1 | 22/01/2021 04:38 |
40011111 | Third_Party_Email | 1 | 17/01/2021 06:38 |
50022222 | Third_Party_Email | 1 | 18/01/2021 04:38 |
80066666 | First_Party_Email | 1 | 24/01/2021 05:38 |
_______________________________________________________________________ |
Associated query to create table and my attempt that doesn't work:
create table Permissions_Obtained
(Customer_ID bigint
,First_Party_Email bit
,Third_Party_Email bit
,First_Party_Email_Date datetime
,Third_Party_Email_Date datetime
)
insert into Permissions_Obtained
(Customer_ID
,First_Party_Email
,Third_Party_Email
,First_Party_Email_Date
,Third_Party_Email_Date
)
VALUES
(40011111, 1, 1, '2021-01-22 04:38', '2021-01-17 06:38'),
(50022222, NULL, 1, NULL, '2021-01-18 04:38'),
(80066666, 1, NULL, '2021-01-24 05:38', null)
select *
from Permissions_Obtained
select
customer_id, Permission
from Permissions_Obtained
unpivot
(
GivenPermission
for Permission in (
First_Party_Email, Third_Party_Email
)
) unpiv1,
unpivot
(
GivenPermissionDate
for PermissionDate in (
First_Party_Email_Date, Third_Party_Email_Date
)
) unpiv2
where GivenPermission = 1
--drop table Permissions_Obtained
Any help would be massively appreciated. TIA
from Recent Questions - Stack Overflow https://ift.tt/3fxxl3x
https://ift.tt/eA8V8J
Comments
Post a Comment