簡體   English   中英

計算 SQL 時的不同情況

[英]Count distinct case when SQL

想知道我是否可以得到一些幫助。 我對 SQL 還是個新手,我每天都在學習嘗試做一些更復雜的事情。

我有一個數據集,其中包含重復的訂單號。 由此我想做兩件事:首先,我正在計算唯一訂單號的數量,然后是所有訂單號的總和。

我已經設法實現了其中的第二部分,但是在執行不同訂單號的計數時遇到了一些困難。

請參閱下面我的查詢,我知道我的連接現在不正確,因為我稍后會處理它們。 我正在使用 ODBC 進度 v10,並使用 Microsoft 查詢管理器提取並在記事本中手寫代碼,然后傳輸回 Excel,因為目前我的公司無法獲得 SSMS。

SELECT 
    Company_0.CoaCompanyName,
    SopOrder_0.SooOrderDate,
    COUNT(DISTINCT CASE WHEN SopOrder_0.SooOrderNumber = SopOrder_0.SooOrderNumber THEN 1 ELSE 0 END) AS 'Orders',
    SUM(CASE WHEN SopOrder_0.SooOrderNumber IS NOT NULL THEN 1 ELSE 0 END) AS 'Order Items',
    SopOrderItem_0.SoiValue,
    SopOrder_0.SooParentOrderReference
FROM 
    SBS.PUB.Company Company_0,
    SBS.PUB.SopOrder SopOrder_0,
    SBS.PUB.SopOrderItem SopOrderItem_0
WHERE 
    SopOrder_0.SopOrderID = SopOrderItem_0.SopOrderID 
    AND Company_0.CompanyID = SopOrder_0.CompanyID
    AND SopOrder_0.SooOrderDate > '2019-01-01'

當前數據看起來像

Company Name           Order Numbers    
-------------------------------------
CompanyA                 Orderno1
CompanyA                 Orderno1
CompanyB                 Orderno2
CompanyB                 Orderno3
CompanyB                 Orderno3
CompanyB                 Orderno3

我希望它看起來如何:

Company Name           Orders         Order Items
-------------------------------------------------
CompanyA                 1                2
CompanyB                 2                4

您可以使用count (distinct..)count(*)group by

    SELECT 
        Company_0.CoaCompanyName
        , Count(DISTINCT SopOrder_0.SooOrderNumber ) AS Orders
        , count(*) AS `Order Item`
    FROM SBS.PUB.Company Company_0
    INNER JOIN SBS.PUB.SopOrder SopOrder_0 ON Company_0.CompanyID = SopOrder_0.CompanyID
    INNER JOIN SBS.PUB.SopOrderItem SopOrderItem_0 ON SopOrder_0.SopOrderID = SopOrderItem_0.SopOrderID 
    WHERE SopOrder_0.SooOrderDate > '2019-01-01'
    GROUP BY Company_0.CoaCompanyName 

為了可讀性,您應該使用顯式join語法並避免基於where條件的舊式隱式join語法。

對於復合列名稱,您可以使用反引號(“ ` ”)。

暫無
暫無

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

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