SQL Server:获取其他列都具有相同值的列值

时间:2018-10-22 17:48:59

标签: sql sql-server tsql

在下面的示例中获取所需信息时遇到问题。

我的数据:

Id      AnotherId        Status
--      ---------        ------
1           3              new
2           3              old
3           5              new
4           6              new
5           11             old
6           11             old
7           55             new
8           55             new

我正在寻找与众不同的AnotherId,其中每个status实例='New'

所以我的结果将如下所示:

 5
 6
55

这将为我提供大部分帮助,但我需要所有“新”状态记录:

select AnotherId
from MyData
group by AnotherId
having count(distinct Status) = 1

我似乎无法完全获得所需的东西。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以使用group by子句:

select AnotherId
from table t
group by AnotherId
having min(status) = max(status) and min(status) = 'new';      

答案 1 :(得分:1)

如果您想要的只是另一个状态为new的另一个ID的独特列表,那么您应该可以到达那里:

SELECT DISTINCT [AnotherId]
from [MyData]
where [Status] = 'new'
and [AnotherId] NOT IN (SELECT [AnotherId] FROM [MyData] WHERE [Status] <> 'new' AND [AnotherId] IS NOT NULL)