SQL 如果在分组或分区后未找到列值,则从 table 中过滤掉记录
SQL to filter out records from a table if a column value is not found after grouping or partitioning
我有一个 table,它有 3 列 AccountNumber Memberid Status,一个帐号将有多个 memberids 与之关联,状态为 "A" Active 或 "C" Closed,我的输出应该只是那些至少有 1 个活跃成员的账号,如果甚至没有一个活跃成员那么我不希望我的输出中有那个账号,请记住,如果一个账号有多个关闭并且至少有 1 个活跃我想要我输出中的所有这些记录。 DBMS 是 DB2,但我可以调整一下。
SELECT * FROM [tablename]
WHERE [AccountNumber] IN (
SELECT [AccountNumber] FROM [tablename]
WHERE [status] = 'c'
)
您可以通过 group by
和 having
子句获得帐号(这似乎是您想要的):
select accountnumber
from table t
group by accountnumber
having sum(case when status = 'a' then 1 else 0 end) > 0;
having
子句简单地计算组中条件为真的行数。 > 0
表示至少有一名活跃成员。
我有一个 table,它有 3 列 AccountNumber Memberid Status,一个帐号将有多个 memberids 与之关联,状态为 "A" Active 或 "C" Closed,我的输出应该只是那些至少有 1 个活跃成员的账号,如果甚至没有一个活跃成员那么我不希望我的输出中有那个账号,请记住,如果一个账号有多个关闭并且至少有 1 个活跃我想要我输出中的所有这些记录。 DBMS 是 DB2,但我可以调整一下。
SELECT * FROM [tablename]
WHERE [AccountNumber] IN (
SELECT [AccountNumber] FROM [tablename]
WHERE [status] = 'c'
)
您可以通过 group by
和 having
子句获得帐号(这似乎是您想要的):
select accountnumber
from table t
group by accountnumber
having sum(case when status = 'a' then 1 else 0 end) > 0;
having
子句简单地计算组中条件为真的行数。 > 0
表示至少有一名活跃成员。