簡體   English   中英

如何在多個表的一個sql查詢中獲得多個計數

[英]How to get multiple counts in one sql query across multiple tables

我有2張桌子

公司及產品

我需要得到2個計數。 第一個是產品總數,第二個是待售產品數_flg = 1

該SQL似乎不起作用。嘗試了其他幾種方法。無法獲得預期的結果

SELECT A.COMPANY_NAME, COUNT(B.PRODUCT_ID) AS TOTAL_COUNT_OF_PRODUCTS, 
       (CASE WHEN B.SALEFLG =1 THEN 1 END) AS COUNT_OF_SALES
FROM COMPANY A LEFT JOIN
     PRODUCT B
     ON B.COMPANY_ID = A.COMPANY_ID
GROUP BY A.COMPANY_NAME 

我想,你只需要為一個總和case

SELECT C.COMPANY_NAME, COUNT(P.PRODUCT_ID) AS TOTAL_COUNT_OF_PRODUCTS, 
       SUM(CASE WHEN P.SALEFLG = 1 THEN 1 ELSE 0 END) AS COUNT_OF_SALES
FROM COMPANY C LEFT JOIN
     PRODUCT P
     ON P.COMPANY_ID = C.COMPANY_ID
GROUP BY C.COMPANY_NAME ;

如果您的B.SALEFLG = 1或0,則可以嘗試

Sum(B.SALEFLG) AS COUNT_OF_SALES 

或使用UNION

如果您使用count,則在其他情況下應考慮null,因為在計數聚合中不考慮null,並且如果B.SALEFLG = 1或0,則使用總和。

您可以嘗試以下代碼:

SELECT A.COMPANY_NAME, COUNT(B.PRODUCT_ID) AS TOTAL_COUNT_OF_PRODUCTS, 
       count(CASE WHEN B.SALEFLG =1 THEN 1 else null END) AS COUNT_OF_SALES
FROM COMPANY A LEFT JOIN
     PRODUCT B
     ON B.COMPANY_ID = A.COMPANY_ID
GROUP BY A.COMPANY_NAME

或嘗試以下方法:

SELECT A.COMPANY_NAME, COUNT(B.PRODUCT_ID) AS TOTAL_COUNT_OF_PRODUCTS, 
       sum(B.SALEFLG) AS COUNT_OF_SALES
FROM COMPANY A LEFT JOIN
     PRODUCT B
     ON B.COMPANY_ID = A.COMPANY_ID
GROUP BY A.COMPANY_NAME

此SQL Server查詢正在運行。 公司表和產品表公司表CompanyID與產品表和sales_flg添加到產品表中。

sales_flg = 1條記錄在CntSalesflg中顯示

select Comp.CompID as CompID, COUNT(Pro.ProductID) as CntProdustID, 
SUM(CASE WHEN Pro.SalesflagID = 1 THEN 1 ELSE 0 END) as CntSalesflg
from Product as Pro
inner join Company as Comp on Pro.CompID = Comp.CompID
GROUP by Comp.CompID

暫無
暫無

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

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