Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 左外接递增和。如何预防?_Tsql_Ssms - Fatal编程技术网

Tsql 左外接递增和。如何预防?

Tsql 左外接递增和。如何预防?,tsql,ssms,Tsql,Ssms,以下是查询的简化版本,但其基本要点是: WITH ClientSpend AS ( SELECT c.ClientName , CONVERT(INT, (ROUND(SUM(CASE WHEN e.Type = 1 THEN e.Dollars ELSE 0 END), 0))) AS 1_Dollars , CONVERT(INT, (ROUND(SUM(CASE WHEN e.Type = 2

以下是查询的简化版本,但其基本要点是:

WITH ClientSpend AS
    (
        SELECT
            c.ClientName
            , CONVERT(INT, (ROUND(SUM(CASE WHEN e.Type = 1 THEN e.Dollars ELSE 0 END), 0))) AS 1_Dollars
            , CONVERT(INT, (ROUND(SUM(CASE WHEN e.Type = 2 THEN e.Dollars ELSE 0 END), 0))) AS 2_Dollars
            -- There's a bunch more of these for different 'Types'
        FROM Expense e WITH(NOLOCK)
            INNER JOIN Client c WITH(NOLOCK)
                ON c.ClientID = e.ClientID
        GROUP BY c.ClientName
    )
SELECT
    ClientName
    , 1_Dollars
    , 2_Dollars
FROM ClientSpend
GROUP BY ClientName
类型2有其自己的费用表,该表细分为我在CTE选择中需要的最后一个案例/总额行的更精细的细节

我尝试在尽可能多的索引上使用[ExpenseType2]表的左连接测试上述查询,我注意到在执行此操作时,2_美元的总和更高。我假设它正在生成多条记录,即使我没有从[ExpenseType2]表中选择任何内容

我如何防止这种情况


谢谢,

为什么不使用子查询?还是简单的select语句?或者,您可能需要使用示例数据断言更多信息

SELECT first_name, 1_Dollars, 2_Dollars FROM  
(
    SELECT
        c.ClientName
        , CONVERT(INT, (ROUND(SUM(CASE WHEN e.Type = 1 THEN e.Dollars ELSE 0 END), 0))) AS 1_Dollars
        , CONVERT(INT, (ROUND(SUM(CASE WHEN e.Type = 2 THEN e.Dollars ELSE 0 END), 0))) AS 2_Dollars
        -- There's a bunch more of these for different 'Types'
    FROM Expense e WITH(NOLOCK)
        INNER JOIN Client c WITH(NOLOCK)
            ON c.ClientID = e.ClientID
    GROUP BY c.ClientName
) a 
请阅读一些关于改进您的问题的提示。