WITH OPList AS (
SELECT
Op,
– 提取数字部分用于排序
CAST(SUBSTRING(op, 3, PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1) AS INT) AS num_part,
– 判断是否为纯数字
CASE
WHEN SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) = ‘’
THEN 1
ELSE 0
END AS is_pure_num,
– 提取字母部分
SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) AS letter_part
FROM [dbo].[T_fault_tag_edit]
WHERE op NOT LIKE ‘%900%’
AND part = ‘缸体’
GROUP BY op
),
AllLines AS (
SELECT line1 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
UNION ALL
SELECT line2 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
)
SELECT
O.Op,
COUNT(A.OP) AS WITH OPList AS (
SELECT
Op,
– 提取数字部分用于排序
CAST(SUBSTRING(op, 3, PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1) AS INT) AS num_part,
– 判断是否为纯数字
CASE
WHEN SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) = ‘’
THEN 1
ELSE 0
END AS is_pure_num,
– 提取字母部分
SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) AS letter_part
FROM [dbo].[T_fault_tag_edit]
WHERE op NOT LIKE ‘%900%’
AND part = ‘缸体’
GROUP BY op
),
AllLines AS (
SELECT line1 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
UNION ALL
SELECT line2 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
)
SELECT
O.Op,
COUNT(A.OP) AS OccurrenceCount
FROM OPList O
LEFT JOIN AllLines A ON O.Op = A.OP
GROUP BY O.Op, O.num_part, O.is_pure_num, O.letter_part
ORDER BY
O.num_part,
O.is_pure_num,
O.letter_part;
WITH OPList AS (
SELECT
Op,
– 提取数字部分用于排序
CAST(SUBSTRING(op, 3, PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1) AS INT) AS num_part,
– 判断是否为纯数字
CASE
WHEN SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) = ‘’
THEN 1
ELSE 0
END AS is_pure_num,
– 提取字母部分
SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) AS letter_part
FROM [dbo].[T_fault_tag_edit]
WHERE op NOT LIKE ‘%900%’
AND part = ‘缸体’
GROUP BY op
),
AllLines AS (
SELECT line1 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
UNION ALL
SELECT line2 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
)
SELECT
O.Op,
COUNT(A.OP) AS OccurrenceCount
FROM OPList O
LEFT JOIN AllLines A ON O.Op = A.OP
GROUP BY O.Op, O.num_part, O.is_pure_num, O.letter_part
ORDER BY
O.num_part,
O.is_pure_num,
O.letter_part;
WITH OPList AS (
SELECT
Op,
– 提取数字部分用于排序
CAST(SUBSTRING(op, 3, PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1) AS INT) AS num_part,
– 判断是否为纯数字
CASE
WHEN SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) = ‘’
THEN 1
ELSE 0
END AS is_pure_num,
– 提取字母部分
SUBSTRING(op, 3 + PATINDEX(‘%0-9%’, SUBSTRING(op, 3, LEN(op)) + ‘X’) - 1, LEN(op)) AS letter_part
FROM [dbo].[T_fault_tag_edit]
WHERE op NOT LIKE ‘%900%’
AND part = ‘缸体’
GROUP BY op
),
AllLines AS (
SELECT line1 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
UNION ALL
SELECT line2 AS OP
FROM [dbo].[自主保全成果展示]
WHERE 部门 = ‘第3制造科’
AND 线组 = ‘缸体组’
)
SELECT
O.Op,
COUNT(A.OP) AS OccurrenceCount
FROM OPList O
LEFT JOIN AllLines A ON O.Op = A.OP
GROUP BY O.Op, O.num_part, O.is_pure_num, O.letter_part
ORDER BY
O.num_part,
O.is_pure_num,
O.letter_part;
OccurrenceCount 统计数量时分为line1,line2 数量