我有一个包含每个帐户多个记录的表,每个记录都有一个带有余额的单位#。如果其中一个单位的余额为负值,我想选择该帐户,并返回该帐户的所有记录,包括带负面单位的记录。例如:Acct#1234有两个记录(每个记录具有不同的单位#和余额)。一个单位的负余额和一个正余额。我想检索一个单位为负数的任何帐户的单位记录。 我该如何做到这一点?
答案 0 :(得分:0)
尝试这种方式:
Select *
from yourAccountTable a
where EXISTS (select 1
from yourAccountTable b
where a.accID = b.accId
and b.unitBalance < 0 )
子句exists
所做的是以布尔方式验证如果给定的注册表(a.accID = b.accId
)遵循某种条件,它基本上是一个JOIN操作,根据您的情况返回行,如果余额是负面的。
答案 1 :(得分:0)
我不知道您的表格结构可以为您提供更准确的查询,但您可以使用简单的WHERE EXISTS
执行此操作:
Select *
From YourTable A
Where Exists
(
Select *
From YourTable B
Where A.AccountNo = B.AccountNo
And B.Balance < 0
)
这将带回AccountNo有任何负值余额记录的记录。
答案 2 :(得分:0)
一个简单的IN
将在标准SQL中执行;
SELECT * FROM myTable
WHERE account_id IN (
SELECT account_id FROM myTable WHERE balance < 0
)
答案 3 :(得分:-1)
不知道你到目前为止所尝试的内容以及你所指的数据库系统:这是一个帮助。 使用限制Accts的条件执行子查询,然后将其提供给父查询以检索所有相关记录。
刚看到你提到过SQL Server 2008.我喜欢EXIST子句的答案,但有时候一个简单的子查询IN子句会给你更多选择:
Select *
from yourAccountTable a
where a.Acct IN (select distinct a.Acct
from yourAccountTable b
where b.unitBalance < 0)