优化嵌套选择查询

时间:2016-10-24 09:08:23

标签: sql-server tsql sql-server-2012 subquery

如何优化以下查询以更好地工作:

SELECT  c.a1,c.a2,          
            (SELECT SUM(t2.TempOB)  FROM tbl1 t2 WHERE    t2.AccNo LIKE CONCAT( C.AccNo,'%') )OB, 
            (SELECT SUM(t3.TempDebit) FROM tbl1 t3 WHERE  t3.AccNo LIKE CONCAT( C.AccNo,'%') ) Debit,
            (SELECT SUM(t4.TempCredit) FROM tbl1 t4 WHERE t4.AccNo  LIKE CONCAT( C.AccNo,'%') ) Credit
            FROM tbl1 C  WHERE AccLevel= @Level  

1 个答案:

答案 0 :(得分:1)

您可以使用如下:

SELECT  
    A.a1,
    A.a2,          
    SUM(B.OB) AS OB, 
    SUM(B.Debit) AS Debit,
    SUM(B.Credit) AS Credit
FROM 
    tbl1 A  LEFT JOIN 
    tbl1 B ON B.AccNo LIKE A.AccNo + '%'
WHERE 
    A.AccLevel = @Level 
GROUP BY
    A.a1,
    A.a2