MS SQL Studio 2008 查询 - 如果我期望 100 个结果,但只收到 95 个,那么确定缺少哪些记录的简



我收到请求,要求我根据几个不同的表查询多达 1,000 个帐号。

我正在寻找一种简单的方法来确定在我正在查询的表中找不到哪些帐号。

例如:

    select
        a.account#
        a.date
        a.amount
    from
        transactiontable as A
    where
        a.account# in ('1','2','3','4')

如果帐户#3不在此表中,则根本不显示该帐户,我的结果将如下所示:

     Account# | Date | Amount
    --------------------------
         1    | 8/31 | $2.50
         2    | 8/31 | $7.25
         4    | 8/31 | $0.63

只有 4 个帐号,很容易确定缺少什么。 使用1,000 +帐号可能非常困难,如果不是不可能的话,找出缺少哪些。 我不能使用"NOT IN"子句,因为这将返回我不在寻找的数万条记录。

我尝试使用具有所有帐号的主表进行各种联接,但没有成功。

在 sql studio 中是否有一种快速的方法来确定缺少哪些帐号? 或者有没有办法对查询进行编码以获得看起来更像这样的结果?

     Account# | Date | Amount
    --------------------------
         1    | 8/31 | $2.50
         2    | 8/31 | $7.25
         3    | NULL |  NULL
         4    | 8/31 | $0.63

或者有没有办法对查询进行编码以获得看起来更像这样的结果?

外部 将您的交易表与您的账户表连接起来。 从账户表中选择您的账户#,并从发生业务表中选择其余字段。 这将为每个帐户生成记录,但为没有相应交易的帐户生成空数据。

这样的东西应该可以工作。 使用您选择的文本编辑器构建语句的第一部分。

DECLARE @accountsTable TABLE (AccountId INT)
INSERT INTO @accountsTable VALUES (1)
INSERT INTO @accountsTable VALUES (2)
INSERT INTO @accountsTable VALUES (3)
INSERT INTO @accountsTable VALUES (4)
SELECT  a.AccountId, t.*
FROM    @accountsTable a
        LEFT OUTER JOIN transactionTable t ON a.AccountId = t.AccountId

最新更新