22,209
社区成员
发帖
与我相关
我的任务
分享
select A.STOCK_CLASS,
A.FACTORY_CD,
A.STOCK_FACTORY,
A.WC_CD,
A.JOB_INST_NO,
A.MATE_CD,
A.PALLET_NO,
A.LOC_CD
FROM DBO.TB_MM_MATE_STOCK A WITH(NOLOCK)
INNER JOIN
(
SELECT C_V,
KOR,
FROM DBO.TB_SM_CODE_DETAIL WITH(NOLOCK)
WHERE CD_CAT = 'IN_CLASS'
AND C_V NOT IN ('IP', 'MI', 'MC', 'MM', 'MZ')
) AS B ON A.STOCK_CLASS = B.C_V
WHERE NOT EXISTS (SELECT 1 FROM TB_MM_MATE_STOCK WHERE A.PALLET_NO=PALLET_NO AND ID>A.ID)
SELECT A.STOCK_CLASS,
A.FACTORY_CD,
A.STOCK_FACTORY,
A.WC_CD,
A.JOB_INST_NO,
A.MATE_CD,
A.PALLET_NO,
A.LOC_CD
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK) WHERE A.ID IN
(
SELECT MAX(A.ID)
FROM DBO.TB_MM_MATE_STOCK AS A WITH (NOLOCK)
INNER JOIN DBO.TB_SM_CODE_DETAIL AS B WITH (NOLOCK)
ON A.STOCK_CLASS = B.C_V
AND B.CD_CAT = 'IN_CLASS'
AND B.C_V NOT IN ('IP', 'MI', 'MC', 'MM', 'MZ')
GROUP BY A.PALLET_NO
)
SELECT MAX(A.ID) AS id,A.PALLET_NO
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK)
INNER JOIN DBO.TB_SM_CODE_DETAIL b WITH (NOLOCK) ON A.STOCK_CLASS = B.C_V
INNER JOIN (
SELECT DISTINCT cv from dbo.TB_SM_CODE_DETAIL
WHERE cv NOT IN ('IP', 'MI', 'MC', 'MM', 'MZ')
) c ON b.c_v<>c.C_V
WHERE a.CD_CAT = 'IN_CLASS'
GROUP BY A.PALLET_NO
SELECT A.STOCK_CLASS,
A.FACTORY_CD,
A.STOCK_FACTORY,
A.WC_CD,
A.JOB_INST_NO,
A.MATE_CD,
A.PALLET_NO,
A.LOC_CD
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK)
INNER JOIN (
--1.单独执行下面这句sql看需要多久
SELECT MAX(A.ID) AS id,A.PALLET_NO
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK)
INNER JOIN DBO.TB_SM_CODE_DETAIL b WITH (NOLOCK) ON A.STOCK_CLASS = B.C_V
INNER JOIN (
SELECT 'IP' AS C_V UNION ALL
SELECT 'MI' AS C_V UNION ALL
SELECT 'MC' AS C_V UNION ALL
SELECT 'MM' AS C_V UNION ALL
SELECT 'MZ' AS C_V
) c ON b.c_v<>c.C_V
WHERE a.CD_CAT = 'IN_CLASS'
GROUP BY A.PALLET_NO
--1.结束
) b ON A.ID = B.ID
--是否还需要下面这个and条件,根据你的逻辑推断出来应该要加上这个条件吧
AND A.PALLET_NO=b.PALLET_NO
再单独执行下里面的那个sql看看需要多久,然后整个执行下看看
SELECT A.STOCK_CLASS,
A.FACTORY_CD,
A.STOCK_FACTORY,
A.WC_CD,
A.JOB_INST_NO,
A.MATE_CD,
A.PALLET_NO,
A.LOC_CD
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK)
INNER JOIN (
--1.单独执行下面这句sql看需要多久
SELECT MAX(A.ID) AS id,A.PALLET_NO
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK)
INNER JOIN DBO.TB_SM_CODE_DETAIL b WITH (NOLOCK) ON A.STOCK_CLASS = B.C_V
WHERE a.CD_CAT = 'IN_CLASS' AND a.C_V NOT IN ('IP', 'MI', 'MC', 'MM', 'MZ')
GROUP BY A.PALLET_NO
--1.结束
) b ON A.ID = B.ID
--是否还需要下面这个and条件,根据你的逻辑推断出来应该要加上这个条件吧
AND A.PALLET_NO=b.PALLET_NO
SELECT A.STOCK_CLASS,
A.FACTORY_CD,
A.STOCK_FACTORY,
A.WC_CD,
A.JOB_INST_NO,
A.MATE_CD,
A.PALLET_NO,
A.LOC_CD
FROM DBO.TB_MM_MATE_STOCK A WITH (NOLOCK) WHERE A.ID IN
(
SELECT ID
FROM DBO.TB_MM_MATE_STOCK AS A WITH (NOLOCK)
INNER JOIN DBO.TB_SM_CODE_DETAIL AS B WITH (NOLOCK)
ON A.STOCK_CLASS = B.C_V
AND B.CD_CAT = 'IN_CLASS'
AND B.C_V NOT IN ('IP', 'MI', 'MC', 'MM', 'MZ')
GROUP BY A.PALLET_NO
)
这样多少秒?