这个错误是因为MySQL不支持在CTE(WITH子句)之前定义一个表别名。解决方法是将CTE(WITH子句)移到主查询的开头,像这样:

WITH cte AS ( SELECT opoh.PurchaseOrder AS purchaseorder, opoh.PurchaseOrderType AS purchaseordertype, opoh.Supplier AS supplier, opoh.PurchasingOrganization AS purchasingorganization, opoh.PurchasingGroup AS purchasinggroup, opoh.CompanyCode AS companycode, opoh.PaymentTerms AS paymentterms, opoh.ZZ1_PosttingDate_PDH AS create_time, opoh.ZZ1_PosttingDate_PDH AS zZ1PosttingDatePDH, opoh.ZZ1_PosttingDate_PDH AS posttingdate, opoh.DocumentCurrency AS documentCurrency, os.BusinessPartnerName AS supplierName, opoh.zz1bedatpdhpdh AS zz1bedatpdhpdh FROM ods_purchase_order_header opoh LEFT JOIN ods_supplier os ON os.Supplier = opoh.Supplier WHERE opoh.PurchaseOrderType = 'Z012' ), cte2 AS ( SELECT cte.*, omh.PostingDate FROM cte LEFT JOIN ods_materialdocument_item omi ON cte.purchaseorder = omi.PurchaseOrder LEFT JOIN ods_materialdocument_head omh ON omi.MaterialDocument = omh.MaterialDocument AND omi.MaterialDocumentYear = omh.MaterialDocumentYear LEFT JOIN vmi_materialdocument vmi ON omi.MaterialDocument != vmi.MaterialDocument AND omi.MaterialDocumentYear != vmi.MaterialDocumentYear WHERE (omi.IsAutomaticallyCreated != 'X' OR omi.IsAutomaticallyCreated IS NULL) AND omi.GoodsMovementType IN (SELECT gmt.GoodsMovementType FROM goodsmovement gmt) ) SELECT * FROM cte2 LIMIT 0, 1;

这样修改后应该可以正确执行查询了

WITH cte AS SELECT opohPurchaseOrder AS purchaseorder opohPurchaseOrderType AS purchaseordertype opohSupplier AS supplier opohPurchasingOrganization AS purchasingorgani

原文地址: http://www.cveoy.top/t/topic/i0or 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录