Für den Hintergrund: das funktioniert ohne die Zugabe der 'E' Tabelle in der Produktion.Fehler mit Varchar zu numerisch
Ich versuche, die unter Abfrage auszuführen, aber ich erhalte die Fehlermeldung:
Msg 8114, Level 16, State 5, Line 10
Error converting data type varchar to numeric.
Das Seltsame ist, dass es auf unserem Test-DB in Ordnung ausführt - nicht etwas zu sehen, um numerische zu konvertieren versuchen, so etwas verwirrt . Nicht wirklich sicher, was diesen Unterschied verursachen würde, da ich davon ausgehe, dass die Datentypen in der Test-DB und der Produktions-DB gleich sind - irgendwelche Ideen?
Danke.
/* - adding po balance qty causes duplicates
- adding stock category causes duplicates
- added PO comments using MAX function to return only first comment - gets rid of duplicates*/
/* Using NEW employee table as of 11/2 */
SELECT
S.team_member_name AS [ASSIGNED EMPLOYEE], --Using new employee table - only on bus unit as of 11/2
H.po_type AS [ PO TYPE],
G.order_no AS [GPS PO #],
P.po_number AS [SAP PO NUMBER],
M.department AS [DEPARTMENT],
G.order_qty AS [GPS QTY],
SUM(P.po_ordered_quantity) AS [SAP QUANTITY],
(SUM(P.po_ordered_quantity) - G.order_qty) AS [DIFFERENCE],
G.last_conf_date_cst AS [LAST CONFIRMED DATE],
K.business_unit_desc AS [BU],
M.[description] AS [DESCRIPTION],
P.material AS [MATERIAL],
MAX(P.comment) AS [PO COMMENT],
MIN(E.date) AS [FIRST SHOWN ON RPT]
FROM
(SELECT
order_no, order_qty, order_status,
last_conf_date_cst
FROM
asagdwpdx_prod.dbo.SimoxOrder1
UNION ALL
SELECT
order_no, order_qty, order_status,
last_conf_date_cst
FROM
asagdwpdx_prod.dbo.SimoxOrder2
UNION ALL
SELECT
order_no, order_qty, order_status,
last_conf_date_cst
FROM
asagdwpdx_prod.dbo.SimoxOrder3) G
JOIN
pdx_sap_user.dbo.vw_po_header H ON G.order_no = h.ahag_number
JOIN
pdx_sap_user.dbo.vw_po_item P ON H.po_number = P.po_number
JOIN
pdx_sap_user.dbo.vw_mm_material M ON P.material = M.material
JOIN
adi_user_maintained.dbo.SCM_PO_Employee_Name S ON P.po_number = S.po_number
JOIN
pdx_sap_user.dbo.vw_kd_business_unit K ON M.business_unit_code = K.business_unit_code
JOIN
adi_user_maintained.dbo.scm_po_error_tracking E ON E.po_number = P.po_number
WHERE
M.business_segment_code NOT IN ('421', '420', '422', '424') --exclude adi golf
AND E.report_source = 'gpsvssap_qty'
GROUP BY
G.order_no, -- GROUP BY needed on aggregate function in SELECT
G.order_qty,
G.order_status,
P.po_number,
P.material,
P.del_indicator,
H.po_created_by,
M.[description],
M.department,
S.team_member_name,
K.business_unit_desc,
G.last_conf_date_cst,
H.po_type
HAVING
G.order_qty <> SUM(P.po_ordered_quantity)
AND G.order_status NOT IN ('60', '90') -- excluding GPS cancelled (90) & shipped (60) - do we need to exclude other status'?
AND P.del_indicator <> 'L'
Die Konvertierung tritt auf, weil Datentypen zwischen Unions nicht übereinstimmen (oder vielleicht in einer Join-Bedingung). Der Fehler tritt auf, weil ein Wert nicht implizit konvertiert werden kann. Dieser Wert ist in Ihrer Testdatenbank offenbar nicht vorhanden. In Ihrer Testdatenbank erfolgt die Konvertierung ebenfalls, ist aber immer erfolgreich. – HoneyBadger
das ist richtig - das Feld Bestellnummer ist in den beiden Tabellen unterschiedlich! Vielen Dank! – user3496218