簡體   English   中英

來自兩個表的SQL Server計數與條件聯接

[英]SQL Server count from two tables join with condition

我與SQL Server 2008的工作,我有兩個表Tab1Tab2 ,我想計算的行數Tab1與柱的條件(NOT NULL) Tab2

我嘗試了以下查詢:

Select count(H.ID) 
From Tab1 H 
Join Tab2 A On A.Compte = H.charging_Id 
Where A.FLAG IS NULL

但是此查詢未返回正確的值。

您所缺少的是對聯接對數據的影響缺乏了解。 Tab2與表1可能存在一對多關系。因此,在加入表2時,將增加返回的記錄數。 如果我對您的理解正確,那么您希望對tab1中沒有在tabl2中有相關記錄的所有記錄進行計數。 在這種情況下,您要使用的地方不存在。

Select count(H.ID) 
from   Tab1 H 
where not exists (select   * from Tab2 
    where Compte = H.charging_Id )
Select count(H.ID) 
From Tab1 H 
Join Tab2 A On A.Compte = H.charging_Id And A.FLAG IS NOT NULL 

如果我對您的理解正確,那么您的內部聯接將不包含第二個表的空值。

好了,從您的問題和評論(需要表1的計數;表1的compte ID等於表2的chargedid)來看,您只需要將'NULL'修改為'NOT NULL',以防萬一如果table1或2中有空值,還包括一個非空條件:

Select count(H.ID) 
From Tab1 H 
Join Tab2 A On ISNULL(A.Compte,0) = ISNULL(H.charging_Id,0)
Where A.FLAG IS NOT NULL

希望這可以幫助

使用內部聯接,例如:

Select count(H.ID) 
From Tab1 H 
INNER Join Tab2 A On A.Compte = H.charging_Id 
Where A.FLAG IS NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM