0

我有一个表帐户:

数据库表

我只想要只有帐户类型“分类帐”或“借记卡”的 practiceid。如果他们有那个+任何其他我不想要的。

不知何故,这并没有削减它:

SELECT PracticeId, accounttype 
FROM Account
WHERE AccountType IN('debit' , 'Ledger')

我只应该得到 practiceid 100 和 105 回来。

我怎样才能有一个查询,它只会给我只有分类帐或借记卡或两者都有的做法?

4

3 回答 3

2

您可以使用类似以下的内容来过滤practiceId具有两者的内容debitledger然后使用 WHERE 子句删除任何practiceIds具有 other 的内容accountTypes

SELECT PracticeId, accounttype 
FROM Account 
WHERE AccountType IN('debit' , 'Ledger')
  and practiceid not in (select practiceid
                         from account
                         where AccountType not IN('debit' , 'Ledger'));

请参阅SQL Fiddle with Demo。这将返回:

| PRACTICEID | ACCOUNTTYPE |
----------------------------
|        100 |      ledger |
|        100 |       debit |
|        105 |      ledger |
于 2013-06-12T13:21:01.223 回答
0

单程

SELECT PracticeId
FROM   Account
GROUP BY PracticeId
HAVING MAX(CASE WHEN AccountType IN( 'debit', 'Ledger' ) THEN 0 ELSE 1 END) = 0
于 2013-06-12T13:21:12.663 回答
0

我建议您首先选择所有具有不同帐户类型的行,然后使用 not in:

SELECT PracticeId, accounttype FROM Account 
WHERE id NOT IN(
SELECT id FROM Account
WHERE accounttype NOT in('debit' , 'Ledger')
)
于 2013-06-12T13:21:58.787 回答