我有一個名爲ITEMMASTER的表。我也有一個名爲BOMMASTER的表(BOM是物料清單)。每個都有一個ITEMCODE字段,但不直接鏈接。還有另一個名爲BOMLINES的表。 BOMMASTER將有1到多個BOMLINES。在鏈接的SQL表上使用聚合(計數)
我想獲得顯示ITEMMASTER,BOMMASTER和物料清單中使用的總行數的結果。但是,當我使用聚合COUNT(tablename.fieldname)時,它返回一個錯誤「SQL錯誤代碼-104選擇列表中的無效表達式(不包含在聚合函數或GROUP BY子句中)。
我用(火鳥)SQL查詢是:
SELECT
ITEMMASTER.ITEMCODE,
BOMLINES.ITEMCODE,
COUNT(BOMLINES.LINECODE)
FROM BOMLINES, ITEMMASTER
WHERE ITEMMASTER.ITEMCODE = BOMLINES.ITEMCODE
GROUP BY BOMLINES.ITEMCODE
我也試過LEFT JOIN,但得到了同樣的錯誤
我知道下面的代碼工作:
SELECT
BOMLINES.ITEMCODE,
COUNT(BOMLINES.LINECODE)
FROM BOMLINES BOMLINES
GROUP BY BOMLINES.ITEMCODE
但我想將它鏈接到ITEMMASTER表,以便我可以在ITEMMASTER字段名上添加額外的WHERE子句。
我想我缺少一些非常基本的東西。
COUNT()的用途是確定每個BOM有多少個BOMLINES。我不在乎BOMLINES是什麼,只是有多少。
所以下面的工作:
SELECT
ITEMMASTER.ITEMCODE,
ITEMMASTER.ADDITIONALFIELD_6,
COUNT(BOMLINES.LINECODE)
FROM BOMLINES
JOIN ITEMMASTER ON ITEMMASTER.ITEMCODE = BOMLINES.ITEMCODE
GROUP BY ITEMMASTER.ITEMCODE, ITEMMASTER.ADDITIONALFIELD_6
ORDER BY ITEMMASTER.ITEMCODE, ITEMMASTER.ADDITIONALFIELD_6
所以我需要提一下節組中選擇列出的所有領域?這似乎相當麻煩。感謝您的BWS
[不良習慣踢:用舊式的JOIN - 亞倫伯特蘭](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kic使用老的風格,加入K-。aspx) – SqlZim
Firebird支持分析功能嗎? https://www.firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-dml-windowfuncs.html也想想你的顯示。如果你想顯示具體的項目,什麼「計數」是你尋找的物品或總數的項目?嘲笑一些預期的結果我認爲這將有助於解決你的問題。 – xQbert