我有一个包含三列的表:
[ID] [name] [link]
1 sample_name_1 sample_link_1
2 sample_name_2 sample_link_2
3 sample_name_3 sample_link_3
我需要以某种方式将它们分组为一列,所以理想的结果是这样:
[one_column]
1
sample_name_1
sample_name_1
2
sample_name_2
sample_link_2
3
sample_name_3
sample_link_3
您对在Microsoft SQL中的外观和如何完成有任何建议吗?
您可以尝试将VALUES
表值构造函数与CROSS APPLY
结合使用:
SELECT v.one_column
FROM Table t
CROSS APPLY (VALUES
(1, CONVERT(varchar(50), ID)),
(2, CONVERT(varchar(50), name)),
(3, CONVERT(varchar(50), link))
) v (rn, one_column)
ORDER BY t.ID, v.rn
虽然这是您应该在表示层(即您的应用或网站)中执行的操作,但是可以在SQL中执行此操作:
select one column
from
(
select cast(id as varchar(10)) as one column, id as sortkey1, 1 as sortkey2 from mytable
union all
select name as one column, id as sortkey1, 2 as sortkey2 from mytable
union all
select link as one column, id as sortkey1, 3 as sortkey2 from mytable
) unioned
order by sortkey1, sortkey2;