我有一个SQL查询,允许我做一些计算。 如何为ICT_AOI表中的每个ItemCode运行该特定查询,而不必手动填写每个ItemCode? p>
例如,不是仅计算1个项目代码,而是计算表格的所有行
最后,例如,我想要:
B0016 | 0.777,
B0017 | 0.645,
B412 | 0.8545,
B568 | 0.1412,
等...
这是我的代码:
SELECT
(COUNT(ProgCode)/pICT) AS ICT, ItemCode
FROM
FailOnly, ICT_AOI
WHERE
Machine = 'Seica'
AND ProgCode = '3'
AND ItemCode = 'B001608AArev9'
AND Side = 'A'
GROUP BY
pICT, ItemCode
由于我的WHERE规范,该代码返回正确的结果但是针对一个特定的行。 机器,ProgCode在表中。 Side,ItemCode,pICT在另一个表中。它们中的两个可以通过以下方式链接:table1.ItemCode = table2.BoardName。
答案 0 :(得分:1)
如果我理解您的意思,那么您可以使用OUTER APPLY
基本上,这将从ITC_AO1表中选择所有不同的ItemCodes,并将查询应用于它。只要检查连接是否在正确的条件和where子句,如果你每次都指定机器,progcode和side,或者那是一个真正的过滤器,我就无法解决。
如果这对您没有帮助,那么我需要在每个表中看到一个信息示例,并且示例结果显示您想要包含的内容,而不是重复等。
SELECT * FROM
(
SELECT DISTINCT ItemCode
FROM
ITC_AOI
) as a
OUTER APPLY
(
SELECT
(COUNT(ProgCode)/pICT) AS ICT, ItemCode
FROM FailOnly as b
LEFT OUTER JOIN ICT_AOI as c
ON b.BoardName = c.ItemCode
WHERE Machine = 'Seica'
AND ProgCode = '3'
AND a.ItemCode = c.ItemCode
AND Side = 'A'
GROUP BY pICT, ItemCode
) as b
答案 1 :(得分:0)
我找到了解决方案。
这是我的代码:
SELECT ItemCode, (SELECT COUNT(ProgCode)/pICT FROM FailOnly ct WHERE ct.BoardName = tc.ItemCode) as namecounter FROM ICT_AOI tc
子查询允许我绕过组,因此对每行进行计算。