SQL Union Select替代数据

时间:2018-08-08 09:22:32

标签: sql sql-server union

我用联合选择创建了一个SQL查询,这是将两列合并为一个的查询。

(select top 10 FirstName from Users) union (select top 10 LastName from Users)

结果如下: QUERY RESULT 1

这是并集选择结果1的原始数据。

ORIGINAL DATA

所以,这是我的问题。 如何选择具有相同列的每个名字和姓氏的数据,但第一个是名字,第二个是姓氏。例如:

Tumbaga Temp   - <FirstName>
Villamor       - <LastName>
Jun            - <FirstName>
Villamor       - <LastName>
FN83           - <FirstName>
Lising Geron   - <LastName>
So on and so fort.

我是sql查询的新手。感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我们在两个部分上都添加了一个通用的row_number()以对其进行分组,然后按此顺序和名称类型进行排序,以显示在第一对/最后一对的簇中

select 'First' as thename,
       Firstname,
       row_number() over(order by firstname) rn
from Users
union all
select 'Last',
       Lastname,
       row_number() over(order by firstname)
from users
order by rn, thename

如果只需要1st 10,则将其包装并添加一个子句

select *
from
(
select 'First' as thename,
       Firstname,
       row_number() over(order by firstname) rn
from Users
union all
select 'Last',
       Lastname,
       row_number() over(order by firstname)
from users
)
where rn <=10
order by rn, thename

答案 1 :(得分:0)

无需使用联合,根据您的描述,表中有两个列“ firstName”和“ lastName”,并且您都希望在一个列中。只需尝试以下查询-:

select FirstName+' '+LastName as FullName from Users

SQL Server

答案 2 :(得分:0)

您可以在两个查询中添加一列,以选择您喜欢的数据。

(select top 10 FirstName, 'FirstName' as NameType  from SysUser) union (select top 10 LastName, 'LastName' as NameType from SysUser)