2017-02-16 18 views
0
Primary Secondary 
----------------------------------- 
UST   MUN 
Data  NULL 
Tele  Data 
Sun   Data 
RMDS  Data 
Data  NULL 
Mor   NULL 
UST   NULL 
Data  Bridge 

我想检查“Secondary”的值是否已经在“primary”中,那么它应该是“primary”,但如果它不是“primary”值,它必须在“次要“列。在同一表格中应用条件

在这里,我想输出:

Primary Secondary 
------ ----------- 
UST  MUN 
Data  Bridge 
Tele 
Sun 
RMDS 
Mor 
Bridge 
+1

它看起来像你正在尝试使用表作为电子表格。尽管表面上看起来相似,但这并不会奏效。特别是,表中的行和列是非常不同的东西。 –

+0

如果你已经为此编写了代码,你无法工作,那么你来对地方了。只需将您的代码(或相关部分)添加到问题中,因为没有这些,我们就无法提供帮助。请参阅[问] –

+0

以前我做了两个联合,但我给了我一个列下的数据,但我想有像我提供的数据,但我没有得到任何线索做到这一点,因为即时新以sql –

回答

0

Yey - 你来了!

你已经达到了足够的经验与挣扎自联接在SQL ..这是在你的职业生涯发展的一个重要里程碑

请 - 使用下面的文章(这是真正伟大的),以找出如何第二场链接到你的一次场机智公顷自我加入..而这基本上:)

链接:https://blog.sqlauthority.com/2010/07/08/sql-server-the-self-join-inner-join-and-outer-join/

+0

警告:建议不要使用仅链接回答,皱眉并且往往会降低投票率。 –

+0

我知道..但我的评论它太过沉重是一个..评论... :( – ymz

0

假设主要在桥下不应该存在于输出。如下请见。

SELECT [primary],ISNULL(MAX([Secondary]),'') as [Secondary] 
FROM 
(SELECT T1.[primary],T2.[Secondary] 
FROM 
(SELECT [primary] 
FROM #T) T1 
JOIN 
(SELECT [primary],[Secondary] 
FROM #T WHERE [Secondary] NOT IN (SELECT [primary] 
FROM #T)) T2 
ON T1. [primary] = T2.[primary] 
GROUP BY T1.[primary],T2.[Secondary] 

UNION 

SELECT ONE,NULL FROM 
(SELECT [Primary] AS ONE FROM #T 
EXCEPT 
SELECT [Secondary] FROM #T) X) M 
GROUP BY [Primary] 
0

溶液的线索是使用Join

完全外部联接(类型的连接)是你想要的那么近形式。

SELECT 
* 
FROM 
(select distinct [Primary] from test) t1 
Full outer JOIN 
(select distinct Secondary 
from test where Secondary not in (select distinct [Primary] from test)) t2 
ON t1.[Primary] = t2.Secondary 

结果: -

Primary Secondary 
NULL Bridge 
Data NULL 
Mor  NULL 
NULL MUN 
RMDS NULL 
Sun  NULL 
Tele NULL 
UST  NULL 
相关问题