如何防止在此TSQL中返回所有Null值?

B. *_*non 0 sql t-sql sql-server null isnull

我有这个TSQL:

SELECT Invd.Unit, M.MemberName, Invd.Description
FROM InvoiceDetail Invd
LEFT JOIN Members M on Invd.MemberNo = M.MemberNo
GROUP BY Invd.Unit, M.MemberName, Invd.Description
Run Code Online (Sandbox Code Playgroud)

...对于返回的90%(除了令人痛苦的慢)之外效果很好,但大约10%的返回记录包含Invd.Unit或M.MemberName或两者的Null值.

我只想要任何地方没有Null的记录.我需要做什么来防止在结果集中返回包含任何空值的记录?

我不想使用这样的东西:

SELECT IsNull(Invd.Unit, 'no Unit'), IsNull(M.MemberName, 'no Member Name'), Invd.Description
. . .
Run Code Online (Sandbox Code Playgroud)

我根本不想要那些记录; 我只想要这三个字段的唯一/不同组合(不包括任何一个中的空值 - 数据仅在存在所有三个值的情况下才有用).

Pரத*_*ீப் 5

更改您LEFT JoinINNER JoinWhere条件

SELECT Invd.unit, 
       M.membername, 
       Invd.description 
FROM   invoicedetail Invd 
       INNER JOIN members M 
               ON Invd.memberno = M.memberno 
WHERE  Invd.unit IS NOT NULL 
       AND M.membername IS NOT NULL 
       AND Invd.description IS NOT NULL 
GROUP  BY Invd.unit, 
          M.membername, 
          Invd.description 
Run Code Online (Sandbox Code Playgroud)

正如评论中所提到的,最好使用Distinct而不是Group by明确意图.当没有聚集SelectSQL服务器是足够聪明,转换group bydistinct