检查多行事务中包含所有空值的字段

时间:2018-12-07 23:03:16

标签: sql sql-server

我有一个事务处理表,其中,根据下面的示例,完整的事务处理(事务)跨越多行

TransactionExample

我要查找的是包含所有null的事务和仅部分具有null的tranid的事务,并且仅显示tranid的位置,其中acount_id下的每一列都为null,而在上例中只有6中的2。

我编写了以下查询,但是搜索“ is null”只会生成具有空值的第一个事务的两行,而不是在整个事务中搜索所有空值。我不确定如何搜索,希望这里的逻辑可以对您有所帮助。

select * 
from ns.tItemFulfillment itf 
    inner join ns.tsalesorder so on itf.created_from_id = so.transaction_id
    left join ns.tpurchaseorder tpo on so.transaction_id = tpo.created_from_id
    inner join ns.transaction_lines tl on itf.transaction_id = tl.transaction_id
    left join ns.accounts a on tl.account_id = a.account_id
where tl.account_ID IS NULL and tpo.created_from_id is null 

产生以下内容,如您所见,它只是上面事务的最后两行。

enter image description here

我应该只能查询全空的tranid,这是我需要的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

使用聚合:

select tranid
from mytable —- or whatever join you need
group by tranid
having max(account_id) is null
and max(account_number) is null
—- etc for all columns that need to be all null