在子查询中使用distinct和order by

时间:2014-07-15 10:32:04

标签: sql-server-2008

我正在努力获得与众不同的产品数量'由“创建者”命令'但最后我只需要" productnumber"按' createdate'排序(我不能使用top作为'产品编号'在很宽的灵活范围内变化。)

需要使用逗号(,)连接不同的产品编号,例如:  123,245,787,875(每个数字代表产品编号)

所需的查询看起来有点像(此查询不起作用并发出错误ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效,除非TOP,OFFSET或FOR XML也被指定):

SELECT stuff(
(
 SELECT distinct ',' + productnumber
 FROM Product
 ORDER BY createdate
 FOR XML path('')
)), 1, 1, '') 

任何人都可以帮助我们如何获得理想的结果。

2 个答案:

答案 0 :(得分:0)

正如Mikael Eriksson建议的那样,使用Group By子句解决了这个问题。谢谢Mikael

答案 1 :(得分:-2)

SELECT stuff((SELECT     ',' + productnumber
     FROM product a
     ORDER BY a.createdate FOR xml path('')),1,1,'')
     AS destn_str