【发布时间】:2017-05-31 07:15:10
【问题描述】:
这是我的实际查询
SELECT
aces.ProductID,'<p>' +
Replace(STUFF((SELECT DISTINCT ', ' + CAST(A.year AS VARCHAR(4)) + ' ' + A.make + ' ' + A.model + ' ' + A.enginebase_new
FROM ACES_Data A
WHERE A.ProductID = aces.ProductID
FOR XML PATH('')), 1, 1, ''), ',', '<br>')
+ '</p><p>' + i.[Subline Code] + '<br>' + i.[Subline Name] + '</p>' AS FullDescription
FROM
ACES_Data aces
LEFT OUTER JOIN
InventoryPricing i ON aces.part_number = i.PART
WHERE
aces.ProductID IS NOT NULL
AND aces.MakeModelMappingID IS NOT NULL
GROUP BY
aces.ProductID, i.[Part Description], i.[Subline Code], i.[Subline Name]
现在在 XML 引发错误之前添加 order by。
请看下面更新的查询
SELECT
aces.ProductID,'<p>' +
Replace(
STUFF
(
(
SELECT
distinct ', ' + Cast(A.year as varchar(4)) + ' ' + A.make +' ' + A.model + ' ' + A.enginebase_new
FROM
ACES_Data A
Where
A.ProductID=aces.ProductID
order by A.make,A.year asc
FOR XML PATH('')
),1,1,'')
,',',
'<br>'
)
+ '</p><p>' + i.[Subline Code] + '<br>'+ i.[Subline Name] + '</p>' As FullDescription
from ACES_Data aces
Left outer join InventoryPricing i
on aces.part_number = i.PART
where aces.ProductID is not null
and aces.MakeModelMappingID is not null
Group By aces.ProductID,i.[Part Description],i.[Subline Code],i.[Subline Name]
关于插入
Where A.ProductID=aces.ProductID **order by A.make,A.year asc** FOR XML PATH('')
它给了我错误
如果指定了 SELECT DISTINCT,则 ORDER BY 项目必须出现在选择列表中。
【问题讨论】:
-
您没有使用 MySQL、Oracle、和 SQL Server。请仅添加您实际使用的 RDMS 的标签。
-
您还应该格式化您的查询,因为这里的大多数用户对阅读这样的长字符串不感兴趣
-
我现在已经格式化了您的查询,但请您以后始终在此平台上格式化您的查询。
标签: sql xml sql-server-2008 tsql