【发布时间】:2011-03-14 08:45:10
【问题描述】:
下面的代码取自我之前的问题here ,并做了一些改动。
SELECT *
FROM ES_TOOL
INNER JOIN ES_HARDWARE ON ES_HARDWARE.eshw_ID = ES_TOOL.ESTOOL_HARDWARE
INNER JOIN ES_PAYMENT on ES_payment.espay_id = es_TOOL.estool_payment
LEFT JOIN (
SELECT
tchap.estch_tool, tfacet.estfa_tool,
count(marks.esmrk_value) AmtMarks
FROM ES_MARK marks
left Join ES_TOOL_FACET tfacet ON marks.esmark_tool_facet = tfacet.estfa_id --line added
left Join ES_TOOL_CHAPTER tchap ON marks.esmark_tool_chapter = tchap.estch_id
GROUP BY tchap.estch_tool
) h ON ES_TOOL.estool_id = h.estch_tool
我正在尝试添加一个额外的连接,以尝试从满足任一左连接“ON”条件的“标记”中获取标记计数。如果没有额外的行,查询将执行,但不计算符合“方面”标准的标记。有了它,我收到以下错误:
消息 8120,第 16 级,状态 1,第 1 行
列 'ES_TOOL_FACET.estfa_tool' 在选择列表中无效,因为它既不包含在聚合函数或 GROUP BY 子句中。
任何帮助将不胜感激。
【问题讨论】:
-
如果您可以在问题中包含一些示例输入和输出数据,则更容易具体说明答案。
-
tchap.estch_tool和tfacet.estfa_tool可以保持相同的值吗?如果可以,是否应该将相同值的匹配一起计算?
标签: sql sql-server join