2017-02-15 39 views
-1
Primary Secondary 
----------------------------------- 
UST   MUN 
Data  NULL 
Tele  Data 
Sun   Data 
RMDS  Data 
Data  NULL 
Mor   NULL 
UST   NULL 
Data  Bridge 

我想检查“Secondary”的值是否已经在“primary”中,那么它应该是“primary”,但如果它不是“primary”值,它必须在仅次于“次要”列。在sqlserver中的列之间应用条件

在这里,我想输出:

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

你能告诉我们你有什么你试过吗? –

+0

任何人都可以回答我的问题吗? – Himani

回答

1

一个UNION(毋宁说UNION ALL)将返回所有您需要的不同的值:

SELECT Primary 
FROM MyTable 

UNION 

SELECT Secondary 
FROM MyTable 
WHERE Secondary IS NOT NULL 
+0

感谢,但Null值也即将在输出,但我不希望这个 – Himani

+0

选择* 从(选择primaryFeed作为饲料从#feedinfo 工会 选择从#feedinfo SecondaryFeed)FEDD 其中饲料是不是空 – Himani

+0

嘿能你回答我上面的查询? – Himani

0

一个输出两个行是不可能的,因为你不有结合因素。 db如何知道UST - MUN应该在同一行而不是UST - Bridge

什么你可以得到它在两个不同的输出,并围绕它建立你的编程逻辑。

对于第一行,你可以这样做:

SELECT * FROM 
(
SELECT t1.`primary` FROM tableName t1 
UNION 
SELECT t1.`primary` FROM tableName t1 
INNER JOIN tableName t2 ON t1.primary = t2.`secondry` 
) AS test1 

而对于第二个,你可以这样做:

SELECT DISTINCT t2.`secondry` FROM tableName t1 
RIGHT JOIN tableName t2 ON t1.primary = t2.`secondry` 
WHERE t1.primary IS NULL AND t2.secondry IS NOT NULL 
相关问题