我有这个查询
select
raw_item_no,
raw_item_no_2,
raw_item_no_3,
raw_item_no_4
from jtjobfil_sql
where job_no = 213418
这样的输出
raw_item_no raw_item_no_2 raw_item_no_3 raw_item_no_4
23 24 25 26
如何让输出看起来像这样
raw_item_nos
23
24
25
26
我调查了枢轴,但我无法弄清楚如何做到这一点因为我没有总结任何列。
答案 0 :(得分:2)
你可以用联盟做点什么。
with my_query (column1, column2, column3)
as
(
SELECT column1, column2, column3
FROM my_table
where id = 1
)
SELECT column1 FROM my_query
UNION
SELECT column2 FROM my_query
UNION
SELECT column3 FROM my_query
答案 1 :(得分:2)
您可以使用CROSS APPLY
:
SELECT x.raw_item_nos
FROM jtjobfil_sql t
CROSS APPLY
(
VALUES
(t.raw_item_no),
(t.raw_item_no_2),
(t.raw_item_no_3),
(t.raw_item_no_4)
) X (raw_item_nos)
WHERE job_no = 213418;
答案 2 :(得分:2)
在您的情况下,您只需要UNPIVOT
和列列表。
查询非常简单
SELECT P AS raw_item_no
FROM (
SELECT raw_item_no
,raw_item_no_2
,raw_item_no_3
,raw_item_no_4
FROM jtjobfil_sql
WHERE job_no = 213418
) p UNPIVOT ( p FOR value IN ( raw_item_no, raw_item_no_2, raw_item_no_3, raw_item_no_4 ) ) AS unvpt
这里是UNPIVOT
DECLARE @table TABLE
(
raw_item_no INT
,raw_item_no_2 INT
,raw_item_no_3 INT
,raw_item_no_4 INT
)
INSERT INTO @table
VALUES ( 23, 24, 25, 26 )
SELECT P AS raw_item_no
FROM (
SELECT raw_item_no
,raw_item_no_2
,raw_item_no_3
,raw_item_no_4
FROM @table
) p UNPIVOT ( p FOR value IN ( raw_item_no, raw_item_no_2, raw_item_no_3, raw_item_no_4 ) ) AS unvpt
答案 3 :(得分:0)
您也可以使用此技巧仅解决特定名称
这也是处理此类Question的一种逻辑,但这是冗长的代码
SELECT substr(ename,1,1) FROM employees WHERE ENAME='JAMES'
UNION ALL
select substr(ename,2,1) from employees WHERE ENAME= 'JAMES'
UNION ALL
select substr(ename,3,1) from employees WHERE ENAME= 'JAMES'
UNION ALL
select substr(ename,4,1) from employees WHERE ENAME= 'JAMES'
UNION ALL
select substr(ename,5,1) from employees WHERE ENAME= 'JAMES'