基本的に2つのクエリから3つの列を引き出す以下のクエリを実行しようとしていますUNION
- 1行目のH.po_numberというマルチパートの識別子がエラーになりました縛られる。私はそれがJOIN
の問題だが、なぜそれがわからないのか知っている?クエリは完全に単独で実行されますが、最初にSELECT
を追加すると、JOIN
という問題が発生します。これは実際にはINSERT
ステートメントになり、最初の3つの値を取り出し、エラートラッキングのために別のテーブルに格納します。なぜそれが壊れているのか?一番上のselect句で別名hが「期限切れ」(別名「D」に置き換え)しているユニオンからの選択ジョイン問題の取得
select H.po_number as [sap po number],
getdate(),
'sapnotgps' as [report_source]
from
(SELECT * FROM (SELECT S.team_member_name as [ASSIGNED EMPLOYEE], -- Using NEW employee table
H.po_type as [PO TYPE],
G.order_no as [GPS PO #],
H.po_number as [SAP PO NUMBER],
CONVERT(VARCHAR(12),H.po_issue_date,101) AS [PO ISSUE DATE],
M.department as [DEPARTMENT],
K.business_unit_desc as [BU],
M.description as [DESCRIPTION],
M.material as [MATERIAL],
H.po_ordered_quantity as [PO QUANTITY],-- Use header ordered qty to negate multi-line po issue (do not SUM!)
MAX(P.comment) as [PO COMMENT],
MIN(CONVERT(VARCHAR(12),E.[date],101)) as [FIRST SHOWN ON RPT]
from (
select order_no, order_status, cst_order_no, status_date,last_conf_date_cst
from asagdwpdx_prod.dbo.SimoxOrder1
union all
select order_no, order_status, cst_order_no, status_date,last_conf_date_cst
from asagdwpdx_prod.dbo.SimoxOrder2
union all
select order_no, order_status, cst_order_no, status_date,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 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_employee_name S
on S.po_number = P.po_number
join adi_user_maintained.dbo.scm_po_error_tracking E
on H.po_number = E.po_number
where G.order_status <> '90'
and not exists (
select 1
from pdx_sap_user.dbo.vw_po_item i
where i.po_number = H.po_number
and (i.del_indicator <> 'L' or i.del_indicator is null
and M.business_segment_code not in ('421','420','422','424'))) --exclude adi golf
group by G.order_no,
G.last_conf_date_cst,
H.po_number,
H.po_issue_date,
M.material,
M.[description],
K.business_unit_desc,
M.department,
H.po_created_by,
S.team_member_name,
H.po_type,
H.po_ordered_quantity
) AS C
UNION ALL
(SELECT
S.team_member_name AS [ASSIGNED EMPLOYEE],
H.po_type AS [PO TYPE],
G.order_no AS [GPS PO #],
H.po_number AS [SAP PO NUMBER],
CONVERT(VARCHAR(12),H.po_issue_date,101) AS [PO ISSUE DATE],
M.department AS [DEPARTMENT],
K.business_unit_desc AS [BU],
M.[description] AS [DESCRIPTION],
P.material AS [MATERIAL],
P.po_ordered_quantity AS [PO QUANTITY],
P.comment AS [PO COMMENT],
MIN(CONVERT(VARCHAR(12),E.[date],101)) AS [FIRST SHOWN ON RPT]
FROM pdx_sap_user.dbo.vw_po_header H
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 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_employee_name S
ON H.po_number = S.po_number
JOIN adi_user_maintained.dbo.scm_po_error_tracking E
ON H.po_number = E.po_number
JOIN
(SELECT order_no,
order_status,
status_date,
right(cst_order_no,10) as [cst_order_no_10],
last_conf_date_cst,
cst_order_no
FROM asagdwpdx_prod.dbo.SimoxOrder1
UNION ALL
SELECT order_no,
order_status,
status_date,
right(cst_order_no,10) as [cst_order_no_10],
last_conf_date_cst,
cst_order_no
FROM asagdwpdx_prod.dbo.SimoxOrder2
UNION ALL
SELECT order_no,
order_status,
status_date,
right(cst_order_no,10) as [cst_order_no_10],
last_conf_date_cst,
cst_order_no
FROM asagdwpdx_prod.dbo.SimoxOrder3) G
ON P.po_number = G.cst_order_no_10
WHERE H.ahag_number LIKE '0%'
AND G.order_status <> '90'
AND NOT EXISTS (
SELECT 1
FROM pdx_sap_user.dbo.vw_po_item i
WHERE i.po_number = H.po_number
AND (i.del_indicator <> 'L' or i.del_indicator IS NULL --find ONLY PO's where all lines are L
AND M.business_segment_code NOT IN ('421','420','422','424'))) --exclude adi golf
GROUP BY S.team_member_name,
H.po_type,
G.order_no,
H.po_number,
H.po_issue_date,
G.last_conf_date_cst,
M.department,
K.business_unit_desc,
M.[description],
P.material,
P.po_ordered_quantity,
P.comment)) AS D;
'H.po_number as [SAP PO NUMBER]'は、最初の行で 'H.po_number'の代わりに' [SAP PO NUMBER] 'を試してください。 – JMichelB