科目余额表查询超时!!!!紧急
金蝶云社区-150xxxx6478
150xxxx6478
0人赞赏了该文章 401次浏览 未经作者许可,禁止转载编辑于2016年06月05日 11:46:08

执行超时的脚本如下:

CREATE TABLE TMP3825DF5D2A0611E680DFB82A72D (FBalanceTotal INT null, FACCTID INT null, FBALANCEID NVARCHAR (80) null, FBALANCENAME NVARCHAR (800) null, FLEVEL INT null, FDC INT null, FITEMDETAILID INT null, FPARENTID INT null, FGROUPID INT null, FDETAILID INT null, FDETAILNUMBER VARCHAR (4000) null, FDETAILNAME NVARCHAR (2000) null, FCyID INT null, FCyName NVARCHAR (80) null, FISDETAIL CHAR (1) null, FAMOUNTDIGITS INT null, FBeginBalanceFor DECIMAL (23, 10) null, FBeginBalanceLocal DECIMAL (23, 10) null, FEndBalanceFor DECIMAL (23, 10) null, FEndBalanceLocal DECIMAL (23, 10) null, FDebit DECIMAL (23, 10) null, FDebitLocal DECIMAL (23, 10) null, FCredit DECIMAL (23, 10) null, FCreditLocal DECIMAL (23, 10) null, FYtdDebit DECIMAL (23, 10) null, FYtdDebitLocal DECIMAL (23, 10) null, FYtdCredit DECIMAL (23, 10) null, FYtdCreditLocal DECIMAL (23, 10) null, FBeginDebit DECIMAL (23, 10) null, FBeginDebitLocal DECIMAL (23, 10) null, FBeginCredit DECIMAL (23, 10) null, FBeginCreditLocal DECIMAL (23, 10) null, FEndDebit DECIMAL (23, 10) null, FEndDebitLocal DECIMAL (23, 10) null, FEndCredit DECIMAL (23, 10) null, FEndCreditLocal DECIMAL (23, 10) null, FDataType INT null DEFAULT 0, FACCTBOOKFAMOUNTDIGITS INT null, FIDENTITYID INT null);
INSERT INTO TMP3825DF5D2A0611E680DFB82A72D (FBalanceTotal, FACCTID, FBALANCEID, FBALANCENAME, FLEVEL, FDC, FITEMDETAILID, FPARENTID, FGROUPID, FDETAILID, FDETAILNUMBER, FDETAILNAME, FCyID, FCyName, FISDETAIL, FAMOUNTDIGITS, FBeginBalanceFor, FBeginBalanceLocal, FEndBalanceFor, FEndBalanceLocal, FDebit, FDebitLocal, FCredit, FCreditLocal, FYtdDebit, FYtdDebitLocal, FYtdCredit, FYtdCreditLocal, FBeginDebit, FBeginDebitLocal, FBeginCredit, FBeginCreditLocal, FEndDebit, FEndDebitLocal, FEndCredit, FEndCreditLocal) SELECT * FROM (SELECT 0 fbalancetotal, a.FACCTID, a.FNUMBER fbalanceid, al.FNAME fbalancename, a.FLEVEL, a.FDC, a.FITEMDETAILID, a.FPARENTID, a.FGROUPID, ISNULL(b.FDETAILID, 0) fdetailid, ISNULL(b3.fnumber, '') fdetailnumber, ISNULL(b3.fname, '') fdetailname, b.FCURRENCYID fcyid, N' ' fcyname, a.FISDETAIL, ISNULL(c.FAMOUNTDIGITS, 2) famountdigits, ISNULL(b1.FBEGINBALANCEFOR, 0) fbeginbalancefor, ISNULL(B1.FBEGINBALANCE, 0) fbeginbalancelocal, ((ISNULL(B1.FBEGINBALANCEFOR, 0) + ISNULL(B.FDEBITFOR, 0)) - ISNULL(B.FCREDITFOR, 0)) fendbalancefor, ((ISNULL(B1.FBEGINBALANCE, 0) + ISNULL(B.FDEBIT, 0)) - ISNULL(B.FCREDIT, 0)) fendbalancelocal, ISNULL(B.FDEBITFOR, 0) fdebit, ISNULL(B.FDEBIT, 0) fdebitlocal, ISNULL(B.FCREDITFOR, 0) fcredit, ISNULL(B.FCREDIT, 0) fcreditlocal, ISNULL(B2.FYTDDEBITFOR, 0) fytddebit, ISNULL(B2.FYTDDEBIT, 0) fytddebitlocal, ISNULL(B2.FYTDCREDITFOR, 0) fytdcredit, ISNULL(B2.FYTDCREDIT, 0) fytdcreditlocal, ISNULL(CASE WHEN (FDC > 0) THEN B1.FBEGINBALANCEFOR END, 0) fbegindebit, ISNULL(CASE WHEN (FDC > 0) THEN B1.FBEGINBALANCE END, 0) fbegindebitlocal, ISNULL(CASE WHEN (FDC < 0) THEN (B1.FBEGINBALANCEFOR * -1) END, 0) fbegincredit, ISNULL(CASE WHEN (FDC < 0) THEN (B1.FBEGINBALANCE * -1) END, 0) fbegincreditlocal, ISNULL(CASE WHEN (FDC > 0) THEN ((ISNULL(B1.FBEGINBALANCEFOR, 0) + ISNULL(B.FDEBITFOR, 0)) - ISNULL(B.FCREDITFOR, 0)) END, 0) fenddebit, ISNULL(CASE WHEN (FDC > 0) THEN ((ISNULL(B1.FBEGINBALANCE, 0) + ISNULL(B.FDEBIT, 0)) - ISNULL(B.FCREDIT, 0)) END, 0) fenddebitlocal, ISNULL(CASE WHEN (FDC < 0) THEN (((ISNULL(B1.FBEGINBALANCEFOR, 0) + ISNULL(B.FDEBITFOR, 0)) - ISNULL(B.FCREDITFOR, 0)) * -1) END, 0) fendcredit, ISNULL(CASE WHEN (FDC < 0) THEN (((ISNULL(B1.FBEGINBALANCE, 0) + ISNULL(B.FDEBIT, 0)) - ISNULL(B.FCREDIT, 0)) * -1) END, 0) fendcreditlocal FROM T_BD_ACCOUNT a LEFT OUTER JOIN T_BD_ACCOUNT_L al ON al.FACCTID = a.FACCTID LEFT OUTER JOIN (SELECT FACCOUNTBOOKID, FAccountID, FDetailID, FCURRENCYID, SUM(FDebitFor) fdebitfor, SUM(FDebit) fdebit, SUM(FCreditFor) fcreditfor, SUM(FCredit) fcredit FROM TMP322D58D82A0611E680DFB82A72D WHERE ((FYearPeriod = 201605 AND FCURRENCYID = 1) AND FACCOUNTBOOKID = 4444870) GROUP BY FACCOUNTBOOKID, FAccountID, FDetailID, FCURRENCYID) b ON B.FACCOUNTID = a.FACCTID LEFT OUTER JOIN (SELECT FACCOUNTBOOKID, FAccountID, FDetailID, FCURRENCYID, FBEGINBALANCEFOR, FBEGINBALANCE FROM TMP322D58D82A0611E680DFB82A72D WHERE ((FYearPeriod = 201605 AND FCURRENCYID = 1) AND FACCOUNTBOOKID = 4444870)) b1 ON (((b.FACCOUNTBOOKID = b1.FACCOUNTBOOKID AND b.FACCOUNTID = b1.FACCOUNTID) AND b.FDETAILID = b1.FDETAILID) AND b.FCURRENCYID = b1.FCURRENCYID) LEFT OUTER JOIN (SELECT FACCOUNTBOOKID, FAccountID, FDetailID, FCURRENCYID, sum(FYtdDebitFor) fytddebitfor, sum(FYtdDebit) fytddebit, sum(FYtdCreditFor) fytdcreditfor, sum(FYtdCredit) fytdcredit FROM TMP322D58D82A0611E680DFB82A72D WHERE (((FYear = 2016 AND FPERIOD = 5) AND FCURRENCYID = 1) AND FACCOUNTBOOKID = 4444870) GROUP BY FACCOUNTBOOKID, FAccountID, FDetailID, FCURRENCYID) b2 ON (((b.FACCOUNTBOOKID = b2.FACCOUNTBOOKID AND b.FACCOUNTID = b2.FACCOUNTID) AND b.FDETAILID = b2.FDETAILID) AND b.FCURRENCYID = b2.FCURRENCYID) LEFT OUTER JOIN (SELECT t0.fid, SUBSTRING((((((((((((CASE WHEN (ISNULL(t1.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t1.FNUMBER)) ELSE '' END + CASE WHEN (ISNULL(t2.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t2.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t3.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t3.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t4.FSTAFFNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t4.FSTAFFNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t5.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t5.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t6.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t6.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t7.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t7.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t8.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t8.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t9.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t9.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t10.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t10.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t11.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t11.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t12.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t12.FNUMBER)) ELSE '' END) + CASE WHEN (ISNULL(t13.FNUMBER, ' ') <> ' ') THEN ('/' + CONVERT(VARCHAR(8000), t13.FNUMBER)) ELSE '' END, 2, 8000) fnumber, SUBSTRING((((((((((((CASE WHEN (ISNULL(t1_L.FNAME, ' ') <> ' ') THEN (N'/' + t1_L.FNAME) ELSE N'' END + CASE WHEN (ISNULL(t2_L.FNAME, ' ') <> ' ') THEN (N'/' + t2_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t3_L.FNAME, ' ') <> ' ') THEN (N'/' + t3_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t4_L.FNAME, ' ') <> ' ') THEN (N'/' + t4_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t5_L.FNAME, ' ') <> ' ') THEN (N'/' + t5_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t6_L.FNAME, ' ') <> ' ') THEN (N'/' + t6_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t7_L.FNAME, ' ') <> ' ') THEN (N'/' + t7_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t8_L.FNAME, ' ') <> ' ') THEN (N'/' + t8_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t9_L.FNAME, ' ') <> ' ') THEN (N'/' + t9_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t10_L.FNAME, ' ') <> ' ') THEN (N'/' + t10_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t11_L.FNAME, ' ') <> ' ') THEN (N'/' + t11_L.FNAME) ELSE N'' END) + CASE WHEN (ISNULL(t12_L.FDATAVALUE, ' ') <> ' ') THEN (N'/' + t12_L.FDATAVALUE) ELSE N'' END) + CASE WHEN (ISNULL(t13_L.FDATAVALUE, ' ') <> ' ') THEN (N'/' + t13_L.FDATAVALUE) ELSE N'' END, 2, 8000) fname FROM t_bd_flexitemdetailv t0 LEFT OUTER JOIN t_BD_Supplier t1 ON t0.FFLEX4 = t1.FSupplierId LEFT OUTER JOIN t_BD_Supplier_L t1_L ON (t0.FFLEX4 = t1_L.FSupplierId AND t1_L.FLOCALEID = 2052) LEFT OUTER JOIN T_BD_DEPARTMENT t2 ON t0.FFLEX5 = t2.FDEPTID LEFT OUTER JOIN T_BD_DEPARTMENT_L t2_L ON (t0.FFLEX5 = t2_L.FDEPTID AND t2_L.FLOCALEID = 2052) LEFT OUTER JOIN T_BD_CUSTOMER t3 ON t0.FFLEX6 = t3.FCUSTID LEFT OUTER JOIN T_BD_CUSTOMER_L t3_L ON (t0.FFLEX6 = t3_L.FCUSTID AND t3_L.FLOCALEID = 2052) LEFT OUTER JOIN T_HR_EMPINFO t4 ON t0.FFLEX7 = t4.FID LEFT OUTER JOIN T_HR_EMPINFO_L t4_L ON (t0.FFLEX7 = t4_L.FID AND t4_L.FLOCALEID = 2052) LEFT OUTER JOIN T_BD_MATERIAL t5 ON t0.FFLEX8 = t5.FMATERIALID LEFT OUTER JOIN T_BD_MATERIAL_L t5_L ON (t0.FFLEX8 = t5_L.FMATERIALID AND t5_L.FLOCALEID = 2052) LEFT OUTER JOIN T_BD_EXPENSE t6 ON t0.FFLEX9 = t6.FEXPID LEFT OUTER JOIN T_BD_EXPENSE_L t6_L ON (t0.FFLEX9 = t6_L.FEXPID AND t6_L.FLOCALEID = 2052) LEFT OUTER JOIN T_FA_ASSETTYPE t7 ON t0.FFLEX10 = t7.FID LEFT OUTER JOIN T_FA_ASSETTYPE_L t7_L ON (t0.FFLEX10 = t7_L.FID AND t7_L.FLOCALEID = 2052) LEFT OUTER JOIN T_ORG_Organizations t8 ON t0.FFLEX11 = t8.FOrgID LEFT OUTER JOIN T_ORG_Organizations_L t8_L ON (t0.FFLEX11 = t8_L.FOrgID AND t8_L.FLOCALEID = 2052) LEFT OUTER JOIN T_CN_BANKACNT t9 ON t0.FF100002 = t9.FBANKACNTID LEFT OUTER JOIN T_CN_BANKACNT_L t9_L ON (t0.FF100002 = t9_L.FBANKACNTID AND t9_L.FLOCALEID = 2052) LEFT OUTER JOIN T_FIN_OTHERS t10 ON t0.FF100006 = t10.FID LEFT OUTER JOIN T_FIN_OTHERS_L t10_L ON (t0.FF100006 = t10_L.FID AND t10_L.FLOCALEID = 2052) LEFT OUTER JOIN LS_T_BD_Shop t11 ON t0.FF100007 = t11.FID LEFT OUTER JOIN LS_T_BD_Shop_L t11_L ON (t0.FF100007 = t11_L.FID AND t11_L.FLOCALEID = 2052) LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY t12 ON t0.FF100004 = t12.FEntryID LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t12_L ON (t0.FF100004 = t12_L.FEntryID AND t12_L.FLOCALEID = 2052) LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY t13 ON t0.FF100005 = t13.FEntryID LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t13_L ON (t0.FF100005 = t13_L.FEntryID AND t13_L.FLOCALEID = 2052)) b3 ON b.FDETAILID = b3.fid LEFT OUTER JOIN T_BD_CURRENCY c ON c.FCURRENCYID = b.FCURRENCYID WHERE (((al.FLOCALEID = 2052 AND (a.FNUMBER = '1122' OR (a.FNUMBER LIKE '1122.%'))) AND (a.FLEVEL <= 1)) AND a.FACCTTBLID = 2001)) tt WHERE (((FBeginCredit <> 0) OR (FBeginDebit <> 0) OR (FYtdCredit <> 0) OR (FYtdDebit <> 0) OR (FBeginCreditLocal <> 0) OR (FBeginDebitLocal <> 0) OR (FYtdCreditLocal <> 0) OR (FYtdDebitLocal <> 0) OR (FYtdDebit <> 0) OR (FYtdCredit <> 0) OR (FYtdDebitLocal <> 0) OR (FYtdCreditLocal <> 0) OR (FDebit <> 0) OR (FCredit <> 0) OR (FDebitLocal <> 0) OR (FCreditLocal <> 0)) AND ((FEndCredit <> 0) OR (FEndDebit <> 0) OR (FEndCreditLocal <> 0) OR (FEndDebitLocal <> 0)));

逻辑太复杂了,看不懂,请金蝶技术尽快处理,财务等着核算呢!!!!