存储过程,用于计算水晶报表的买家和卖家总数

问题描述 投票:0回答:0

我正在为 Crystal Report 应用程序编写 SP,我的经理告诉我在计算非重复计数时我有一个错误。基本上,我在一家初创的批发鱼类竞价平台工作,我正在编写我的 SP,这样我就可以从数据库中检索数据。数据库有一个表,其中包含我需要计算总和的所有模块,并对将在月度统计报告中显示的不同字段进行计数。我将链接我的 SP 和表格的屏幕截图,以便您可以更好地了解我正在处理的内容。我似乎没有正确理解的两个字段是(“卖家总数”和“交易总数”)交易我的意思是出价交易。

The results of the stored procedure

ALTER PROCEDURE [dbo].[cryrptTotals]
    @start_date datetime,
    @end_date datetime
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        COUNT(DISTINCT CASE WHEN items.status = 'BIDDING_DONE'  THEN items.buyer_id END) as buyer_count,
        COUNT(DISTINCT case when items.status = 'BIDDING_DONE' THEN items.seller_id END) as seller_count,
        CAST(COUNT(CASE WHEN items.status != 'CANCEL' THEN items.bid_amount END) AS decimal(18,2)) as total_completed_transactions,


        --would love to remember separating them according to the number of the logical parts (count and sum) for more efficient and add index to item.status
        SUM(CASE WHEN items.status = 'BIDDING_DONE' THEN items.commission_on_price END) as commission_sum,
        SUM(CASE WHEN items.status ='BIDDING_DONE' THEN items.sale_price END) / SUM(CASE WHEN items.status ='BIDDING_DONE' THEN items.weight END) AS sale_price_avg,
        SUM(CASE WHEN items.status = 'BIDDING_DONE' THEN items.weight END) as Total_sold_weight,
        SUM(items.weight) as Listed_weight,
        SUM(CASE WHEN items.status = 'BIDDING_DONE' THEN items.sale_price END) AS total_sold_value      
    FROM [BEHAR_MARKET_PROD].[dbo].[items]
    INNER JOIN [BEHAR_MARKET_PROD].[dbo].[item_bids] ON items.id = item_bids.item_id
    WHERE items.market_id = 1  AND CONVERT(date, items.created_at) BETWEEN CONVERT(date, @start_date) AND CONVERT(date, @end_date)
END

我试图在不同的程序中将总和和计数分开,我尝试处理可能属于以下状态描述的状态案例('BIDDING_DONE' - 'EXPIRED' - 'ACTIVE' - 'SAVE' - '不活动')。对我来说最有意义的是 [status != 'EXPIRED'] ,这将使它选择所有其余的。我认为结果中存在某种重复,但我不确定。

sql sql-server crystal-reports
© www.soinside.com 2019 - 2024. All rights reserved.