Sql server 可以返回相交数据的SQL查询
我很难找到一个好的问题标题——让我告诉你我有什么,期望的结果是什么。我希望这可以在SQL中完成(我有SQL Server 2008) 1) 我有一个名为Sql server 可以返回相交数据的SQL查询,sql-server,sql-server-2008,sql,Sql Server,Sql Server 2008,Sql,我很难找到一个好的问题标题——让我告诉你我有什么,期望的结果是什么。我希望这可以在SQL中完成(我有SQL Server 2008) 1) 我有一个名为Contacts的表,在该表中我有如下字段: FirstName, LastName, CompanyName 2) 一些演示数据: FirstName LastName CompanyName John Smith Smith Corp Paul Wade Marc Andrews Microsoft
Contacts
的表,在该表中我有如下字段:
FirstName, LastName, CompanyName
2) 一些演示数据:
FirstName LastName CompanyName
John Smith Smith Corp
Paul Wade
Marc Andrews Microsoft
Bill Gates Microsoft
Steve Gibbs Smith Corp
Diane Rowe ABC Inc.
3) 我想得到一份人员和公司的交叉列表,但公司只一次。这看起来像这样:
Name
ABC Inc.
Bill Gates
Diane Rowe
John Smith
Marc Andrews
Microsoft
Smith Corp
Steve Gibbs
Paul Wade
我可以用SQL来做这件事吗?怎么做?我不知道你说的“相交”是什么意思,但是你可以很容易地得到你描述为对同一个表的两个查询的并集的结果
select
t.firstname + ' ' + t.lastname
from
mytable t
union
select
t.company
from
mytable t
编辑:默认情况下,UNION应该使每个SELECT都不同。我不确定“相交”是什么意思,但您可以很容易地得到您描述为针对同一个表的两个查询的UNION的结果
select
t.firstname + ' ' + t.lastname
from
mytable t
union
select
t.company
from
mytable t
编辑:默认情况下,UNION应使每个选择都不同。这是否满足您的需要
SELECT FirstName + ' ' + LastName AS Name
FROM Contacts
UNION
SELECT CompanyName
FROM Contacts
(使用
UNION
而不是UNION-ALL
将确保顶部和底部的清晰性。如果您确实需要重复人名,mdma的答案将起作用。您可能需要根据需要添加按姓名排序
)这是否满足您的需要
SELECT FirstName + ' ' + LastName AS Name
FROM Contacts
UNION
SELECT CompanyName
FROM Contacts
(使用
UNION
而不是UNION-ALL
将确保顶部和底部的清晰性。如果您确实需要重复人名,mdma的答案将起作用。您可能需要根据需要添加按姓名排序
)您接受所有人名,然后再加上所有的公司
SELECT CONCAT([First Name],' ',[Last Name]) AS Name FROM Contacts
UNION ALL
SELECT DISTINCT CompanyName FROM Contacts
WHERE CompanyName IS NOT NULL
DISTINCT关键字确保公司只输出一次,并且
子句删除不知道公司信息的行
如果一个人与一家公司同名,则将输出一个副本。如果您不想这样做,则将
UNION ALL
更改为UNION
,任何名称只输出一次。您将获取所有人名,然后添加所有公司
SELECT CONCAT([First Name],' ',[Last Name]) AS Name FROM Contacts
UNION ALL
SELECT DISTINCT CompanyName FROM Contacts
WHERE CompanyName IS NOT NULL
DISTINCT关键字确保公司只输出一次,并且
子句删除不知道公司信息的行
如果一个人与一家公司同名,则将输出一个副本。如果您不想这样做,那么将
UNION ALL
更改为UNION
,任何名称将只输出一次。看到每个人对相同答案的细微差别很有趣。看到每个人对相同答案的细微差别很有趣。