내가 쿼리를 개발하기 위해 노력하고있어 후 작동하지 않습니다와 나는 약 2 초 약 49,000 레코드를 가지고이쿼리 피벗
SELECT a.No,
a.Finish,
a.Shift,
a.McCode,
d.NAME,
b.ItemCode,
b.ItemName,
b.Qty,
b.LotNo,
b.Description,
CASE
WHEN b.Description LIKE '%not good%' THEN 'NG'
ELSE 'OK'
END AS OKNG,
c.ItemCode AS matcode,
c.LotNo AS matlot,
CASE
WHEN e.GroupName = 'CONTACT' THEN 'CONTACT'
ELSE 'Coil/Silver/Wire'
END AS GroupName,
(c.Qty/(a.Qty + a.QtyNg)) * b.Qty AS materialused
FROM PPRDDLV a
LEFT JOIN ICMUTTRAN b
ON a.PrdNo = b.TranNo
AND a.No = b.TranId
LEFT JOIN ICMUTTRAN c
ON a.PrdNo = c.TranNo
AND a.Finish = c.DatePost
AND c.TranTypeID = 6
AND c.LotNo <> '0'
LEFT JOIN popr d
ON a.OprCode = d.Code
LEFT JOIN ICITEM e
ON c.ItemId = e.id
WHERE c.qty IS NOT NULL
AND b.ItemCode IS NOT NULL
같은 것을 가지고, 그때 나는 열을 피벗 wan't 그 값의 2 종류가 있습니다, 그래서 나는이
SELECT no,
finish,
shift,
mccode,
NAME,
itemcode,
itemname,
qty,
lotno,
description,
okng,
matcode,
matlot
FROM (SELECT a.No,
a.Finish,
a.Shift,
a.McCode,
d.NAME,
b.ItemCode,
b.ItemName,
b.Qty,
b.LotNo,
b.Description,
CASE
WHEN b.Description LIKE '%not good%' THEN 'NG'
ELSE 'OK'
END AS OKNG,
c.ItemCode AS matcode,
c.LotNo AS matlot,
CASE
WHEN e.GroupName = 'CONTACT' THEN 'CONTACT'
ELSE 'Coil/Silver/Wire'
END AS GroupName,
(c.Qty/(a.Qty + a.QtyNg)) * b.Qty AS materialused
FROM PPRDDLV a
LEFT JOIN ICMUTTRAN b
ON a.PrdNo = b.TranNo
AND a.No = b.TranId
LEFT JOIN ICMUTTRAN c
ON a.PrdNo = c.TranNo
AND a.Finish = c.DatePost
AND c.TranTypeID = 6
AND c.LotNo <> '0'
LEFT JOIN popr d
ON a.OprCode = d.Code
LEFT JOIN ICITEM e
ON c.ItemId = e.id
WHERE c.qty IS NOT NULL
AND b.ItemCode IS NOT NULL) AS a
PIVOT (Max(materialused)
FOR groupname IN ([CONTACT],
[Coil/Silver/Wire])) AS b
처럼 뭔가를 설정하지만 쿼리도 십분 후, 그것도 하나의 기록을 표시하지 않습니다 완료되지 않습니다. 내가 피벗을 사용하기 전에 첫 번째 쿼리는 a.no로 명령을 내렸지 만 실행했을 때 결과는 105로 표시되지만 쿼리는 여전히 작동 중이며 더 이상 레코드가로드되지 않았습니다.
아무도 내가 무슨 일이 일어나는지 알 수 있습니까? 감사합니다.
다음은 내부 쿼리에서 수집 한 샘플 데이터와 쿼리 후 예상 값입니다. enter image description here
내가 거기 안하면서 (여전히하지만 작동, 및 열 "물질이 사용"에 대한 유의하지 않은 선택 외부에 "matcode"를 선택한 실현, 나중에 그것을 사용할 것 피벗이 완료된 후
쿼리의 일부 샘플 데이터와 예상 된 결과 – Squirrel
성능 문제를 게시하시기 바랍니다 그래서 당신의 query.Why이 테이블 사용 "ICMUTTRAN"테이블 힌트 "(NOLOCK)와"에 가입하고 사용 왼쪽 피하려고 여러 번? –
@Squirrel 피벗 후 내부 쿼리와 예상 값의 샘플 데이터를 게시 할 수 있습니까? 왜냐하면 내부 쿼리는 데이터 수집을위한 일반적인 SQL이라고 생각하기 때문입니다. – Reynaldi