SQL Query,如何省略特定数据?

时间:2017-09-29 20:37:12

标签: sql sql-server

我正在编写一个SQL Query,它返回已关闭的Cost Center列表。这在TE_INACTIVE列中以'C'为人所知。

问题:一些成本中心被转移到另一家公司,因此有3个成本中心的副本都是关闭和开放的。由于这个成本中心已经关闭并重新开放,我不想再读它了,因为新的成本中心没有'C'。我怎样才能做到这一点?

换句话说,如果其中一个重复的成本中心中没有“C”,那么我想跳过它。

这是我原始查询的(部分)和我的意思的截图。

select distinct TE_COST_CENTER, TE_INACTIVE from ABCS_TABLE_E where 
TE_COST_CENTER = '38M'

Click this to view picture!

3 个答案:

答案 0 :(得分:1)

你应该使用" NOT EXISTS"操作者:

select distinct TE_COST_CENTER, TE_INACTIVE from ABCS_TABLE_E t1
where TE_INACTIVE = 'C'
and not exists (select * from ABCS_TABLE_E t2 where t2.TE_COST_CENTER = t1.TE_COST_CENTER and t2.TE_INACTIVE <>'C')

答案 1 :(得分:0)

你走了:

SELECT TE_COST_CENTER, TE_INACTIVE
FROM ABCS_TABLE_E
WHERE TE_CO NOT IN (SELECT TE_CO FROM ABCS_TABLE_E WHERE TE_INACTIVE = 'C');

答案 2 :(得分:-1)

您可以使用子查询来选择已关闭“C”的成本中心。该成本中心的任何记录都不会被选中。

SELECT TE_COST_CENTER, 
       TE_INACTIVE
  FROM ABCS_TABLE_E
 WHERE TE_COST_CENTER NOT IN (SELECT TE_COST_CENTER
                                FROM ABCS_TABLE_E
                               WHERE TE_INACTIVE = 'C')