是否有人可以帮助我查询。
这是我的桌子。
我运行查询时结果如下图所示。
TOTAL_BINS_PER_SITE字段是SITE的bin计数组的总和。这是我的查询
SELECT
X.SITE,
X.STATUS,
X.TOTAL_BINS_PER_BIN,
(SELECT SUM(BIN_COUNT) FROM TS_BINS_PER_SITE WHERE ID = X.ID) AS TOTAL_BINS_PER_SITE
FROM
(SELECT ID, SUM(BIN_COUNT) AS TOTAL_BINS_PER_BIN, SITE AS SITE, STATUS AS STATUS
FROM TS_BINS_PER_SITE
WHERE STATUS = 'P'
AND ID = (
SELECT A.ID
FROM TS_REC_DATA A
JOIN TS_MAIN_REC B
ON A.REC_ID = B.ID
WHERE B.LOT_ID = 'QYYZCA004K'
AND B.TESTER_ID = 'LTXMXSPC035'
AND A.DATEMODIFIED = '5/30/2014 10:01:05')
GROUP BY SITE, STATUS, ID
) X
它正在运行,但问题是TOTAL_BINS_PER_SITE会将所有bin计数加起来,我期望的是它将按站点对BIN_COUNT组进行求和。例如,站点1,TOTAL_BINS_PER_SITE假设为5,因为站点1中的bin_count 4 + bin_count 1。 我知道我在第5行的查询缺失" GROUP BY SITE",但是当我将其添加到第5行时,错误说"单行中的多行选择"。有人可以帮助我离开这里吗?非常感谢你!
答案 0 :(得分:1)
问题是,您在select中的子查询具有条件WHERE ID = X.ID
,而您应该使用WHERE SITE = X.SITE
(或者WHERE SITE = X.SITE AND ID = X.ID
)来仅在总和中获取该网站的项目
在即将推出的Firebird 3中,可以使用窗口功能简化,例如使用
SUM(TOTAL_BINS_PER_BIN) OVER (GROUP BY X.SITE) AS TOTAL_BINS_PER_SITE
而不是select中的子查询。