【发布时间】:2014-11-06 16:09:44
【问题描述】:
我已经看到了很多关于这个主题的问题和答案,但我很难理解我到底做错了什么。下面的查询获取了我需要的所有信息,但如果它有多行,当r_num 是相同的,并且每个 r_num 的 r_order 是相同的,那么每个 r_num 我只有一个结果。现在虽然这个调用给了我错误。有人可以向我解释Distinct是如何工作的,以及我如何使用它在这个查询中实现我的目标?
SELECT DISTINCT po_num, r_num, r_order, vendor, order_date, received_by, received_date FROM(
SELECT p.id as po_num, r.id as r_num, r.rec_order as r_order, v.name as vendor, p.order_date, r.received_by, r.received_date
FROM Parts.dbo.po as p INNER JOIN
Parts.dbo.vendor as v ON v.id = p.vendor__id INNER JOIN
Parts.dbo.receipts as r ON r.id = 'R-'+CAST(p.id AS varchar)
GROUP BY p.id, r.id, r.rec_order, v.name, p.order_date, r.received_by, r.received_date) as tbl
GROUP BY r_num, r_order
这是我得到的错误
Msg 8120, Level 16, State 1, Line 1
Column 'tbl.po_num' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
【问题讨论】:
-
你遇到了什么错误?
-
编辑显示错误
-
错误说明了一切......
DISTINCT不是这里的问题,而是你的分组 -
是的,我还是个 SQL 新手,所以我需要在这里稍微解释一下。 ://
标签: sql-server