[英]SQL Server count from two tables join with condition
我與SQL Server 2008的工作,我有兩個表Tab1
和Tab2
,我想計算的行數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.