SQL to fetch row into column based on con
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have a table in a below structure.and i want to create a sql which can fetch record in a specific order.
Name Phone B.Email P.Email
Jack 12 ab12@test.com a21@test.com
Ram 12345 null Ram@test.com
Raja 543 Raj@test.om null
Rik 122 null null
Output i want in below order
Name Phone EMAIL IsPrimary EmailType
Jack 123 ab12@test.com Y B
Jack 123 a21@test.com N P
Ram 321 Ram@test.com Y P
Raja 543 Raj@test.om Y B
if there is B.Email, then it will be primary, else P.Email will be primary. IF both the emails are null then that record wil not be there in the output.
sql oracle etl
add a comment |
I have a table in a below structure.and i want to create a sql which can fetch record in a specific order.
Name Phone B.Email P.Email
Jack 12 ab12@test.com a21@test.com
Ram 12345 null Ram@test.com
Raja 543 Raj@test.om null
Rik 122 null null
Output i want in below order
Name Phone EMAIL IsPrimary EmailType
Jack 123 ab12@test.com Y B
Jack 123 a21@test.com N P
Ram 321 Ram@test.com Y P
Raja 543 Raj@test.om Y B
if there is B.Email, then it will be primary, else P.Email will be primary. IF both the emails are null then that record wil not be there in the output.
sql oracle etl
I see in our output for Ram IsPrimary is 'N' ...please clarify
– kanagaraj
Nov 16 '18 at 18:43
add a comment |
I have a table in a below structure.and i want to create a sql which can fetch record in a specific order.
Name Phone B.Email P.Email
Jack 12 ab12@test.com a21@test.com
Ram 12345 null Ram@test.com
Raja 543 Raj@test.om null
Rik 122 null null
Output i want in below order
Name Phone EMAIL IsPrimary EmailType
Jack 123 ab12@test.com Y B
Jack 123 a21@test.com N P
Ram 321 Ram@test.com Y P
Raja 543 Raj@test.om Y B
if there is B.Email, then it will be primary, else P.Email will be primary. IF both the emails are null then that record wil not be there in the output.
sql oracle etl
I have a table in a below structure.and i want to create a sql which can fetch record in a specific order.
Name Phone B.Email P.Email
Jack 12 ab12@test.com a21@test.com
Ram 12345 null Ram@test.com
Raja 543 Raj@test.om null
Rik 122 null null
Output i want in below order
Name Phone EMAIL IsPrimary EmailType
Jack 123 ab12@test.com Y B
Jack 123 a21@test.com N P
Ram 321 Ram@test.com Y P
Raja 543 Raj@test.om Y B
if there is B.Email, then it will be primary, else P.Email will be primary. IF both the emails are null then that record wil not be there in the output.
Name Phone B.Email P.Email
Jack 12 ab12@test.com a21@test.com
Ram 12345 null Ram@test.com
Raja 543 Raj@test.om null
Rik 122 null null
Name Phone B.Email P.Email
Jack 12 ab12@test.com a21@test.com
Ram 12345 null Ram@test.com
Raja 543 Raj@test.om null
Rik 122 null null
Name Phone EMAIL IsPrimary EmailType
Jack 123 ab12@test.com Y B
Jack 123 a21@test.com N P
Ram 321 Ram@test.com Y P
Raja 543 Raj@test.om Y B
Name Phone EMAIL IsPrimary EmailType
Jack 123 ab12@test.com Y B
Jack 123 a21@test.com N P
Ram 321 Ram@test.com Y P
Raja 543 Raj@test.om Y B
sql oracle etl
sql oracle etl
asked Nov 16 '18 at 16:00
Piyush SinghPiyush Singh
326
326
I see in our output for Ram IsPrimary is 'N' ...please clarify
– kanagaraj
Nov 16 '18 at 18:43
add a comment |
I see in our output for Ram IsPrimary is 'N' ...please clarify
– kanagaraj
Nov 16 '18 at 18:43
I see in our output for Ram IsPrimary is 'N' ...please clarify
– kanagaraj
Nov 16 '18 at 18:43
I see in our output for Ram IsPrimary is 'N' ...please clarify
– kanagaraj
Nov 16 '18 at 18:43
add a comment |
4 Answers
4
active
oldest
votes
Is this what you want?
order by phone, name, isprimary desc
add a comment |
I used a UNION to get first people with b.email and then those with p.email and CASE to sort out primary and type
SELECT name, phone, b.email EMAIL, 'Y' IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE b.email IS NOT NULL
UNION
SELECT name, phone, p.email EMAIL,
CASE WHEN b.email IS NULL THEN 'Y'
ELSE 'N'
END IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE p.email IS NOT NULL
ORDER BY name
add a comment |
The other answers are close, but I think they all have errors in their output.
Not sure what SQL engine this is, here's my answer for MySQL5.6:
SELECT name,
phone,
CASE WHEN BEmail IS NOT NULL THEN BEMail ELSE PEmail END as EMAIL,
'Y' as IsPrimary,
CASE WHEN BEmail IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM table_name t
WHERE NOT (BEmail IS NULL AND PEmail IS NULL)
UNION ALL
SELECT name, phone, PEmail, 'N', 'P'
from table_name
WHERE BEmail IS NOT NULL
AND PEmail IS NOT NULL
ORDER BY Name;
Note that I've changed B.Email to BEmail, P.Email to PEMail, and the table is called "table_name".
SQL Fiddle here
add a comment |
Try below query :
create table Table3
(Name varchar2(20),
phone number,
"B.mail" varchar2(50),
"P.mail" varchar2(50));
insert into Table3 values ('Jack',12,'ab12@test.com','a21@test.com');
insert into Table3 values ('Ram',12345,null,'Ram@test.com');
insert into Table3 values ('Raja',543,'Raj@test.com',null);
insert into Table3 values ('Rik',122,null,null);
SELECT Name, Phone, COALESCE("B.mail","P.mail") Email, CASE WHEN "B.mail" IS NOT NULL THEN 'Y' ELSE 'N' END as IsPrimary,CASE WHEN "B.mail" IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
UNION
SELECT Name, Phone, COALESCE("P.mail","B.mail") Email, CASE WHEN "P.mail" IS NOT NULL THEN 'N' ELSE 'Y' END as IsPrimary,CASE WHEN "P.mail" IS NOT NULL THEN 'P' ELSE 'B' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53341427%2fsql-to-fetch-row-into-column-based-on-con%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
Is this what you want?
order by phone, name, isprimary desc
add a comment |
Is this what you want?
order by phone, name, isprimary desc
add a comment |
Is this what you want?
order by phone, name, isprimary desc
Is this what you want?
order by phone, name, isprimary desc
answered Nov 16 '18 at 16:03
Gordon LinoffGordon Linoff
797k37318423
797k37318423
add a comment |
add a comment |
I used a UNION to get first people with b.email and then those with p.email and CASE to sort out primary and type
SELECT name, phone, b.email EMAIL, 'Y' IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE b.email IS NOT NULL
UNION
SELECT name, phone, p.email EMAIL,
CASE WHEN b.email IS NULL THEN 'Y'
ELSE 'N'
END IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE p.email IS NOT NULL
ORDER BY name
add a comment |
I used a UNION to get first people with b.email and then those with p.email and CASE to sort out primary and type
SELECT name, phone, b.email EMAIL, 'Y' IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE b.email IS NOT NULL
UNION
SELECT name, phone, p.email EMAIL,
CASE WHEN b.email IS NULL THEN 'Y'
ELSE 'N'
END IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE p.email IS NOT NULL
ORDER BY name
add a comment |
I used a UNION to get first people with b.email and then those with p.email and CASE to sort out primary and type
SELECT name, phone, b.email EMAIL, 'Y' IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE b.email IS NOT NULL
UNION
SELECT name, phone, p.email EMAIL,
CASE WHEN b.email IS NULL THEN 'Y'
ELSE 'N'
END IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE p.email IS NOT NULL
ORDER BY name
I used a UNION to get first people with b.email and then those with p.email and CASE to sort out primary and type
SELECT name, phone, b.email EMAIL, 'Y' IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE b.email IS NOT NULL
UNION
SELECT name, phone, p.email EMAIL,
CASE WHEN b.email IS NULL THEN 'Y'
ELSE 'N'
END IsPrimary,
CASE WHEN b.email IS NULL THEN 'P'
ELSE 'B'
END EmailType
FROM mail
WHERE p.email IS NOT NULL
ORDER BY name
answered Nov 16 '18 at 16:31
Joakim DanielsonJoakim Danielson
10.8k3725
10.8k3725
add a comment |
add a comment |
The other answers are close, but I think they all have errors in their output.
Not sure what SQL engine this is, here's my answer for MySQL5.6:
SELECT name,
phone,
CASE WHEN BEmail IS NOT NULL THEN BEMail ELSE PEmail END as EMAIL,
'Y' as IsPrimary,
CASE WHEN BEmail IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM table_name t
WHERE NOT (BEmail IS NULL AND PEmail IS NULL)
UNION ALL
SELECT name, phone, PEmail, 'N', 'P'
from table_name
WHERE BEmail IS NOT NULL
AND PEmail IS NOT NULL
ORDER BY Name;
Note that I've changed B.Email to BEmail, P.Email to PEMail, and the table is called "table_name".
SQL Fiddle here
add a comment |
The other answers are close, but I think they all have errors in their output.
Not sure what SQL engine this is, here's my answer for MySQL5.6:
SELECT name,
phone,
CASE WHEN BEmail IS NOT NULL THEN BEMail ELSE PEmail END as EMAIL,
'Y' as IsPrimary,
CASE WHEN BEmail IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM table_name t
WHERE NOT (BEmail IS NULL AND PEmail IS NULL)
UNION ALL
SELECT name, phone, PEmail, 'N', 'P'
from table_name
WHERE BEmail IS NOT NULL
AND PEmail IS NOT NULL
ORDER BY Name;
Note that I've changed B.Email to BEmail, P.Email to PEMail, and the table is called "table_name".
SQL Fiddle here
add a comment |
The other answers are close, but I think they all have errors in their output.
Not sure what SQL engine this is, here's my answer for MySQL5.6:
SELECT name,
phone,
CASE WHEN BEmail IS NOT NULL THEN BEMail ELSE PEmail END as EMAIL,
'Y' as IsPrimary,
CASE WHEN BEmail IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM table_name t
WHERE NOT (BEmail IS NULL AND PEmail IS NULL)
UNION ALL
SELECT name, phone, PEmail, 'N', 'P'
from table_name
WHERE BEmail IS NOT NULL
AND PEmail IS NOT NULL
ORDER BY Name;
Note that I've changed B.Email to BEmail, P.Email to PEMail, and the table is called "table_name".
SQL Fiddle here
The other answers are close, but I think they all have errors in their output.
Not sure what SQL engine this is, here's my answer for MySQL5.6:
SELECT name,
phone,
CASE WHEN BEmail IS NOT NULL THEN BEMail ELSE PEmail END as EMAIL,
'Y' as IsPrimary,
CASE WHEN BEmail IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM table_name t
WHERE NOT (BEmail IS NULL AND PEmail IS NULL)
UNION ALL
SELECT name, phone, PEmail, 'N', 'P'
from table_name
WHERE BEmail IS NOT NULL
AND PEmail IS NOT NULL
ORDER BY Name;
Note that I've changed B.Email to BEmail, P.Email to PEMail, and the table is called "table_name".
SQL Fiddle here
answered Nov 16 '18 at 16:54
user2752159user2752159
1421221
1421221
add a comment |
add a comment |
Try below query :
create table Table3
(Name varchar2(20),
phone number,
"B.mail" varchar2(50),
"P.mail" varchar2(50));
insert into Table3 values ('Jack',12,'ab12@test.com','a21@test.com');
insert into Table3 values ('Ram',12345,null,'Ram@test.com');
insert into Table3 values ('Raja',543,'Raj@test.com',null);
insert into Table3 values ('Rik',122,null,null);
SELECT Name, Phone, COALESCE("B.mail","P.mail") Email, CASE WHEN "B.mail" IS NOT NULL THEN 'Y' ELSE 'N' END as IsPrimary,CASE WHEN "B.mail" IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
UNION
SELECT Name, Phone, COALESCE("P.mail","B.mail") Email, CASE WHEN "P.mail" IS NOT NULL THEN 'N' ELSE 'Y' END as IsPrimary,CASE WHEN "P.mail" IS NOT NULL THEN 'P' ELSE 'B' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
add a comment |
Try below query :
create table Table3
(Name varchar2(20),
phone number,
"B.mail" varchar2(50),
"P.mail" varchar2(50));
insert into Table3 values ('Jack',12,'ab12@test.com','a21@test.com');
insert into Table3 values ('Ram',12345,null,'Ram@test.com');
insert into Table3 values ('Raja',543,'Raj@test.com',null);
insert into Table3 values ('Rik',122,null,null);
SELECT Name, Phone, COALESCE("B.mail","P.mail") Email, CASE WHEN "B.mail" IS NOT NULL THEN 'Y' ELSE 'N' END as IsPrimary,CASE WHEN "B.mail" IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
UNION
SELECT Name, Phone, COALESCE("P.mail","B.mail") Email, CASE WHEN "P.mail" IS NOT NULL THEN 'N' ELSE 'Y' END as IsPrimary,CASE WHEN "P.mail" IS NOT NULL THEN 'P' ELSE 'B' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
add a comment |
Try below query :
create table Table3
(Name varchar2(20),
phone number,
"B.mail" varchar2(50),
"P.mail" varchar2(50));
insert into Table3 values ('Jack',12,'ab12@test.com','a21@test.com');
insert into Table3 values ('Ram',12345,null,'Ram@test.com');
insert into Table3 values ('Raja',543,'Raj@test.com',null);
insert into Table3 values ('Rik',122,null,null);
SELECT Name, Phone, COALESCE("B.mail","P.mail") Email, CASE WHEN "B.mail" IS NOT NULL THEN 'Y' ELSE 'N' END as IsPrimary,CASE WHEN "B.mail" IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
UNION
SELECT Name, Phone, COALESCE("P.mail","B.mail") Email, CASE WHEN "P.mail" IS NOT NULL THEN 'N' ELSE 'Y' END as IsPrimary,CASE WHEN "P.mail" IS NOT NULL THEN 'P' ELSE 'B' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
Try below query :
create table Table3
(Name varchar2(20),
phone number,
"B.mail" varchar2(50),
"P.mail" varchar2(50));
insert into Table3 values ('Jack',12,'ab12@test.com','a21@test.com');
insert into Table3 values ('Ram',12345,null,'Ram@test.com');
insert into Table3 values ('Raja',543,'Raj@test.com',null);
insert into Table3 values ('Rik',122,null,null);
SELECT Name, Phone, COALESCE("B.mail","P.mail") Email, CASE WHEN "B.mail" IS NOT NULL THEN 'Y' ELSE 'N' END as IsPrimary,CASE WHEN "B.mail" IS NOT NULL THEN 'B' ELSE 'P' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
UNION
SELECT Name, Phone, COALESCE("P.mail","B.mail") Email, CASE WHEN "P.mail" IS NOT NULL THEN 'N' ELSE 'Y' END as IsPrimary,CASE WHEN "P.mail" IS NOT NULL THEN 'P' ELSE 'B' END as EmailType
FROM Table3 t
where "B.mail" IS NOT NULL OR "P.mail" IS NOT NULL
answered Nov 16 '18 at 18:41
kanagarajkanagaraj
38417
38417
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53341427%2fsql-to-fetch-row-into-column-based-on-con%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I see in our output for Ram IsPrimary is 'N' ...please clarify
– kanagaraj
Nov 16 '18 at 18:43