Display multiple rows of one table into one row without using PIVOT
I'm currently trying to form a SELECT query to from a table without using PIVOT.
Examples of data and expected result are shown below:
DB Data
| Id | TYPE | Amount |
| 1 | Deposit | 50 |
| 2 | Withdraw | 10 |
| 3 | Withdraw | 30 |
Expected Result
| Row | TYPE | Amount | TYPE | Amount |
| 1 | Deposit | 50 | Withdraw | 10 |
| 2 | - | 0 | Withdraw | 30 |
The deposits and withdrawals are not related to each other, just displaying in ascending order of id. The expected end result is two row of all deposits while another two row with withdrawals. The purpose of doing this is to maximize spaces.
Thought of using left join but there's no unique id that can let me use GROUP BY
Thanks in advance for helping.
sql-server t-sql
add a comment |
I'm currently trying to form a SELECT query to from a table without using PIVOT.
Examples of data and expected result are shown below:
DB Data
| Id | TYPE | Amount |
| 1 | Deposit | 50 |
| 2 | Withdraw | 10 |
| 3 | Withdraw | 30 |
Expected Result
| Row | TYPE | Amount | TYPE | Amount |
| 1 | Deposit | 50 | Withdraw | 10 |
| 2 | - | 0 | Withdraw | 30 |
The deposits and withdrawals are not related to each other, just displaying in ascending order of id. The expected end result is two row of all deposits while another two row with withdrawals. The purpose of doing this is to maximize spaces.
Thought of using left join but there's no unique id that can let me use GROUP BY
Thanks in advance for helping.
sql-server t-sql
add a comment |
I'm currently trying to form a SELECT query to from a table without using PIVOT.
Examples of data and expected result are shown below:
DB Data
| Id | TYPE | Amount |
| 1 | Deposit | 50 |
| 2 | Withdraw | 10 |
| 3 | Withdraw | 30 |
Expected Result
| Row | TYPE | Amount | TYPE | Amount |
| 1 | Deposit | 50 | Withdraw | 10 |
| 2 | - | 0 | Withdraw | 30 |
The deposits and withdrawals are not related to each other, just displaying in ascending order of id. The expected end result is two row of all deposits while another two row with withdrawals. The purpose of doing this is to maximize spaces.
Thought of using left join but there's no unique id that can let me use GROUP BY
Thanks in advance for helping.
sql-server t-sql
I'm currently trying to form a SELECT query to from a table without using PIVOT.
Examples of data and expected result are shown below:
DB Data
| Id | TYPE | Amount |
| 1 | Deposit | 50 |
| 2 | Withdraw | 10 |
| 3 | Withdraw | 30 |
Expected Result
| Row | TYPE | Amount | TYPE | Amount |
| 1 | Deposit | 50 | Withdraw | 10 |
| 2 | - | 0 | Withdraw | 30 |
The deposits and withdrawals are not related to each other, just displaying in ascending order of id. The expected end result is two row of all deposits while another two row with withdrawals. The purpose of doing this is to maximize spaces.
Thought of using left join but there's no unique id that can let me use GROUP BY
Thanks in advance for helping.
sql-server t-sql
sql-server t-sql
edited 8 mins ago
JamesYTL
asked 20 hours ago
JamesYTLJamesYTL
1716
1716
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
declare @t table (Id int, [TYPE] varchar(100), Amount int);
insert into @t values
( 1, 'Deposit', 50),
( 2, 'Withdraw', 10),
( 3, 'Withdraw', 30);
with cte as
(
select *, ROW_NUMBER() over(partition by [TYPE] order by id) n
from @t t
),
nums as
(
select distinct n
from cte
)
select n.n as row, c1.TYPE, c1.Amount, c2.TYPE, c2.Amount
from nums n
left join cte c1
on n.n = c1.n and c1.TYPE = 'Deposit'
left join cte c2
on n.n = c2.n and c2.TYPE = 'Withdraw';
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "182"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2fdba.stackexchange.com%2fquestions%2f227826%2fdisplay-multiple-rows-of-one-table-into-one-row-without-using-pivot%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
declare @t table (Id int, [TYPE] varchar(100), Amount int);
insert into @t values
( 1, 'Deposit', 50),
( 2, 'Withdraw', 10),
( 3, 'Withdraw', 30);
with cte as
(
select *, ROW_NUMBER() over(partition by [TYPE] order by id) n
from @t t
),
nums as
(
select distinct n
from cte
)
select n.n as row, c1.TYPE, c1.Amount, c2.TYPE, c2.Amount
from nums n
left join cte c1
on n.n = c1.n and c1.TYPE = 'Deposit'
left join cte c2
on n.n = c2.n and c2.TYPE = 'Withdraw';
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
add a comment |
declare @t table (Id int, [TYPE] varchar(100), Amount int);
insert into @t values
( 1, 'Deposit', 50),
( 2, 'Withdraw', 10),
( 3, 'Withdraw', 30);
with cte as
(
select *, ROW_NUMBER() over(partition by [TYPE] order by id) n
from @t t
),
nums as
(
select distinct n
from cte
)
select n.n as row, c1.TYPE, c1.Amount, c2.TYPE, c2.Amount
from nums n
left join cte c1
on n.n = c1.n and c1.TYPE = 'Deposit'
left join cte c2
on n.n = c2.n and c2.TYPE = 'Withdraw';
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
add a comment |
declare @t table (Id int, [TYPE] varchar(100), Amount int);
insert into @t values
( 1, 'Deposit', 50),
( 2, 'Withdraw', 10),
( 3, 'Withdraw', 30);
with cte as
(
select *, ROW_NUMBER() over(partition by [TYPE] order by id) n
from @t t
),
nums as
(
select distinct n
from cte
)
select n.n as row, c1.TYPE, c1.Amount, c2.TYPE, c2.Amount
from nums n
left join cte c1
on n.n = c1.n and c1.TYPE = 'Deposit'
left join cte c2
on n.n = c2.n and c2.TYPE = 'Withdraw';
declare @t table (Id int, [TYPE] varchar(100), Amount int);
insert into @t values
( 1, 'Deposit', 50),
( 2, 'Withdraw', 10),
( 3, 'Withdraw', 30);
with cte as
(
select *, ROW_NUMBER() over(partition by [TYPE] order by id) n
from @t t
),
nums as
(
select distinct n
from cte
)
select n.n as row, c1.TYPE, c1.Amount, c2.TYPE, c2.Amount
from nums n
left join cte c1
on n.n = c1.n and c1.TYPE = 'Deposit'
left join cte c2
on n.n = c2.n and c2.TYPE = 'Withdraw';
answered 20 hours ago
sepupicsepupic
6,916817
6,916817
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
add a comment |
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
ROW_NUMBER() over(partition by [TYPE] order by id) n is exactly what I'm lacking in my LEFT JOIN query. Thanks!
– JamesYTL
19 hours ago
add a comment |
Thanks for contributing an answer to Database Administrators Stack Exchange!
- 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%2fdba.stackexchange.com%2fquestions%2f227826%2fdisplay-multiple-rows-of-one-table-into-one-row-without-using-pivot%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