SQL unpivot function
i have a table with over 100 rows and 20 columns ( store, sales, size, profit etc.) how can i unpivot into just three columns ( store, metric , value)
current state
future state
sql sql-server tsql unpivot
add a comment |
i have a table with over 100 rows and 20 columns ( store, sales, size, profit etc.) how can i unpivot into just three columns ( store, metric , value)
current state
future state
sql sql-server tsql unpivot
Which DBMS are you using?
– Mayank Porwal
Nov 24 '18 at 19:29
ms sql server is the DBMS
– PRC
Nov 24 '18 at 21:17
add a comment |
i have a table with over 100 rows and 20 columns ( store, sales, size, profit etc.) how can i unpivot into just three columns ( store, metric , value)
current state
future state
sql sql-server tsql unpivot
i have a table with over 100 rows and 20 columns ( store, sales, size, profit etc.) how can i unpivot into just three columns ( store, metric , value)
current state
future state
sql sql-server tsql unpivot
sql sql-server tsql unpivot
edited Nov 25 '18 at 13:25
a_horse_with_no_name
301k46459554
301k46459554
asked Nov 24 '18 at 19:26
PRCPRC
82
82
Which DBMS are you using?
– Mayank Porwal
Nov 24 '18 at 19:29
ms sql server is the DBMS
– PRC
Nov 24 '18 at 21:17
add a comment |
Which DBMS are you using?
– Mayank Porwal
Nov 24 '18 at 19:29
ms sql server is the DBMS
– PRC
Nov 24 '18 at 21:17
Which DBMS are you using?
– Mayank Porwal
Nov 24 '18 at 19:29
Which DBMS are you using?
– Mayank Porwal
Nov 24 '18 at 19:29
ms sql server is the DBMS
– PRC
Nov 24 '18 at 21:17
ms sql server is the DBMS
– PRC
Nov 24 '18 at 21:17
add a comment |
1 Answer
1
active
oldest
votes
I recommend using cross apply
:
select t.store, v.metric, v.value
from t cross apply
(values ('size', size),
('sales', sales),
('profit', profit),
. . .
) v(metric, value);
Note that this requires that the value
column have compatible types.
Although you do have to list all the columns, you can generate the list using a query or a spreadsheet, simplifying the effort to write the query.
thank you. this works great
– PRC
Nov 25 '18 at 16:54
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%2f53461642%2fsql-unpivot-function%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
I recommend using cross apply
:
select t.store, v.metric, v.value
from t cross apply
(values ('size', size),
('sales', sales),
('profit', profit),
. . .
) v(metric, value);
Note that this requires that the value
column have compatible types.
Although you do have to list all the columns, you can generate the list using a query or a spreadsheet, simplifying the effort to write the query.
thank you. this works great
– PRC
Nov 25 '18 at 16:54
add a comment |
I recommend using cross apply
:
select t.store, v.metric, v.value
from t cross apply
(values ('size', size),
('sales', sales),
('profit', profit),
. . .
) v(metric, value);
Note that this requires that the value
column have compatible types.
Although you do have to list all the columns, you can generate the list using a query or a spreadsheet, simplifying the effort to write the query.
thank you. this works great
– PRC
Nov 25 '18 at 16:54
add a comment |
I recommend using cross apply
:
select t.store, v.metric, v.value
from t cross apply
(values ('size', size),
('sales', sales),
('profit', profit),
. . .
) v(metric, value);
Note that this requires that the value
column have compatible types.
Although you do have to list all the columns, you can generate the list using a query or a spreadsheet, simplifying the effort to write the query.
I recommend using cross apply
:
select t.store, v.metric, v.value
from t cross apply
(values ('size', size),
('sales', sales),
('profit', profit),
. . .
) v(metric, value);
Note that this requires that the value
column have compatible types.
Although you do have to list all the columns, you can generate the list using a query or a spreadsheet, simplifying the effort to write the query.
answered Nov 25 '18 at 13:24
Gordon LinoffGordon Linoff
782k35310414
782k35310414
thank you. this works great
– PRC
Nov 25 '18 at 16:54
add a comment |
thank you. this works great
– PRC
Nov 25 '18 at 16:54
thank you. this works great
– PRC
Nov 25 '18 at 16:54
thank you. this works great
– PRC
Nov 25 '18 at 16:54
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%2f53461642%2fsql-unpivot-function%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
Which DBMS are you using?
– Mayank Porwal
Nov 24 '18 at 19:29
ms sql server is the DBMS
– PRC
Nov 24 '18 at 21:17