SELECT
t.SALES_INV_NUM,
v.LHFID,
SC.CUR_NAME,
t.DOC_DATE,
ROW_NUMBER() OVER (partition by t.SALES_INV_NUM order by t.SALES_INV_NUM DESC) AS LINE_NUM,
t.OPR_ID,
t.OPR_TIME,
t.CUST_ID,
t.CHK_ID,
t.CHK_TIME,
t.SOURCE_TYPE,
t.PAY_WAY,
t.BANK_NAME,
t.TTL_ACC_VAL,
t.TTL_REAL_VAL,
t.TTL_UNACC_VAL,
t.DOCUMENT_STATUS,
t.TTL_RATE_VAL,
t.Invoice_Status,
t.REMARK,T3.CUST_NAME,T3.CUST_NUM,T3.Sign,
e.PROD_CLS_NUM,e.PROD_CLS_NAME,e.SPEC_NAME,e.TEXTURE_MATERIAL,e.ELECTROPLATE_COLOR,e.CLS_KHBM,e.COMPANY_NAME,d.SOURCE_NUM,d.TAX_RATE,E1.GRN_NUM AS ORD_GRN_NUM,D.PRICE,D.SALES_QTY,
d.VAL,D.TAX_PRIC,D.CUST_PO_ID,D.SOURCE_DATE,
d.RATE_VAL,
d.ACC_VAL,
D.UNIT_NAME,
D.TAX_PRICE,
D.TAX_TAX_VAL,
d.UNACC_VAL,
D.PROD_CLS_ID,
d.REAL_VAL,
d.REAL_QTY,
d.DXID,
d.StrF1,
H.GRN_DATE,
I.CPO,
(D.VAL*isnull(t.CUR_RATE,1))AmountInLocalCurrency,(D.TAX_TAX_VAL*isnull(t.CUR_RATE,1))TaxCurrency,
(D.RATE_VAL*isnull(t.CUR_RATE,1))AllCurrency ,D.ORIG_ORD_NUM,
CASE WHEN ISNULL(OA.RECEIV_VAL,0) = 0 THEN 0
WHEN ISNULL(t.TTL_ACC_VAL,0)-ISNULL(OA.RECEIV_VAL,0) <= 0 THEN 2
WHEN ISNULL(t.TTL_ACC_VAL,0)-ISNULL(OA.RECEIV_VAL,0) > 0 THEN 1 END RECEIV_PUSH
FROM SALES_INVOICE t LEFT JOIN (
select Distinct D1.SALES_INV_NUM,D1.PROD_CLS_ID,D1.SOURCE_NUM ,D1.TAX_RATE,D1.DXID,D1.RE_DXID,D1.PRICE,D1.PRICE*(1+ISNULL(D1.TAX_RATE,0)/100)TAX_PRICE,SALES_QTY,D1.VAL,D1.VAL*ISNULL(D1.TAX_RATE,0)/100 TAX_TAX_VAL,D1.REAL_QTY,
RATE_VAL,ACC_VAL,UNACC_VAL,REAL_VAL,D2.UNIT_NAME,D1.StrF1,AmountInLocalCurrency ,D1.ORIG_ORD_NUM,D1.SOURCE_DATE,D3.CUST_PO_ID,D1.TAX_PRICE TAX_PRIC
from SALES_INVOICE_DTL D1
LEFT JOIN SYS_UNIT D2 ON D1.UNIT_ID=D2.UNIT_ID
LEFT JOIN ORD_DTL D3 ON D1.RE_OLD_DXID = D3.DXID AND D1.PROD_CLS_ID=D3.PROD_CLS_ID) d ON t.SALES_INV_NUM=d.SALES_INV_NUM
LEFT JOIN PROD_CLS e ON d.PROD_CLS_ID=e.PROD_CLS_ID LEFT JOIN SYS_CUST T3 ON T.CUST_ID=T3.CUST_ID LEFT JOIN SYS_CUR SC ON SC.CUR_ID=T.CUR_ID LEFT JOIN GRN_DTL D1 ON D.RE_DXID = D1.DXID LEFT JOIN GRN_StockUp E1 ON D1.SOURCE_DOC_NUM = E1.GRN_NUM LEFT JOIN LH_Voucher v ON t.VoucherID = v.LHFVoucherID LEFT JOIN GRN H ON D1.GRN_NUM = H.GRN_NUM LEFT JOIN (SELECT SUM(isnull(REAL_VAL,0)) as RECEIV_VAL,o.SOURCE_NUM
from SALES_RECEIV H
LEFT JOIN SALES_RECEIV_DTL O ON H.SALES_REC_NUM=O.SALES_REC_NUM
group by o.SOURCE_NUM ) OA ON t.SALES_INV_NUM=OA.SOURCE_NUM LEFT JOIN ORD I ON d.ORIG_ORD_NUM = I.ORD_NUM
WHERE 1=1 AND ( t.DOC_DATE >= '2022-12-03 00:00:00' AND t.DOC_DATE <= '2023-01-03 00:00:00' )
可以查看一下sql查询计划,它的性能卡在什么地方
查询慢,加索引