SQL查询 - GROUP BY SUM挂在那里没有任何元素

SQL查询 - GROUP BY SUM挂在那里没有任何元素

问题描述:

我尝试运行查询:SQL查询 - GROUP BY SUM挂在那里没有任何元素

SELECT statement_element_statement_id, sum(statement_element_commission_amount_change) 
    FROM [chester-prod].[dbo].[ws_statement_element_commissions] 
    JOIN [chester-prod].[dbo].[ws_statement_elements] 
    on [statelemt_element_commission_se_id] = statement_element_id 
    WHERE statement_element_statement_id in 
    (10258, 10226, 10225, 10224, 10223, 
    10220, 10219, 10218, 10217, 10216) 
    GROUP BY statement_element_statement_id 

10258,10226,10225,10224,10223 - 这些ID有元素

10220,10219,10218 ,10217,10216 - 有IDS没有任何元素

当我运行此查询,我可以得到5个结果:

SELECT statement_element_statement_id, sum(statement_element_commission_amount_change) 
    FROM [chester-prod].[dbo].[ws_statement_element_commissions] 
    JOIN [chester-prod].[dbo].[ws_statement_elements] 
    on [statelemt_element_commission_se_id] = statement_element_id 
    WHERE statement_element_statement_id in 
    (10258, 10226, 10225, 10224, 10223) 
    GROUP BY statement_element_statement_id 

enter image description here

如何处理挂组时可以有时无法找到特定的id在哪里声明的元素?

+2

你是什么意思的“把手挂”? – GurV

+0

您希望在结果中包含这些数字10220,...(没有元素)? –

+0

我期望5行数字结果,5行没有结果,甚至不出现。当出现5个元素(10220,10219,10218,10217,10216)中的至少一个时,我的查询冻结。编辑:添加屏幕只有5个元素在查询中,他们都有记录 – Staly

使用右连接(或者相反顺序,并使用左连接):

SELECT 
    statement_element_statement_id, 
    sum(statement_element_commission_amount_change) 
FROM 
    [chester-prod].[dbo].[ws_statement_element_commissions] 
    RIGHT JOIN [chester-prod].[dbo].[ws_statement_elements] on 
     [statelemt_element_commission_se_id] = statement_element_id 
WHERE 
    statement_element_statement_id in (
     10258, 10226, 10225, 10224, 10223, 
     10220, 10219, 10218, 10217, 10216 
    ) 
GROUP BY 
    statement_element_statement_id 
+1

NVL是凝聚在MSSQL,没有帮助 – Staly

+0

statement_element_commission_amount_change是表ws_statement_element_commissions,你不需要NVL或合并 – Indent

+0

'coalesce'或'如果你想有一个默认值isnull'需要 – Indent

你可以试试这个。我认为[ws_statement_elements]表应该在左侧。

SELECT statement_element_statement_id, SUM(ISNULL(statement_element_commission_amount_change,0)) 
    FROM [chester-prod].[dbo].[ws_statement_elements] 
     LEFT JOIN [chester-prod].[dbo].[ws_statement_element_commissions] 
    on [statelemt_element_commission_se_id] = statement_element_id 
    WHERE statement_element_statement_id in 
    (10258, 10226, 10225, 10224, 10223, 
    10220, 10219, 10218, 10217, 10216) 
    GROUP BY statement_element_statement_id 
+0

它需要50秒,以使完整请求。 – Staly

+0

以前的结果如何? –

+0

这是在50-60秒之间。 – Staly