我对SQL很陌生,可能在这里做错了所以我希望有人可以帮我解决这个问题。
我有一个较长的存储过程,以下面的结尾。
这里的想法是将两个查询合并为一个,这样我就不需要一个单独的存储过程,但仍然将结果分开,一个国家选择(selCountry
),另一个按日期选择( selDate
)。
当我尝试以这种方式保存时,我收到错误:" Incorrect syntax near the keyword 'UNION'
。
当我在单独的程序中运行它们时,一切正常。
-- create final output
SELECT CONVERT(DATETIME, dDay) AS dDay,
CONVERT(VARCHAR(11), dDay, 106) AS dLong,
CONVERT(VARCHAR(10), dDay, 126) AS dShort,
countries,
regions,
mode,
dName,
dDesc
FROM @tempFix
WHERE countries LIKE '%'+@selCountry+'%'
OR regions LIKE '%'+@selCountry+'%'
ORDER BY dDay
UNION ALL
SELECT CONVERT(DATETIME, dDay) AS dDay,
CONVERT(VARCHAR(11), dDay, 106) AS dLong,
CONVERT(VARCHAR(10), dDay, 126) AS dShort,
countries,
regions,
mode,
dName,
dDesc
FROM @tempFix
WHERE DAY(dDay) = DAY(@selDate)
AND MONTH(dDay) = MONTH(@selDate)
FOR XML PATH('dDays'), ELEMENTS, TYPE, ROOT('root')
非常感谢提供任何帮助,迈克。
答案 0 :(得分:3)
请删除ORDER BY并将其添加到最后。您不能在UNION / UNION ALL之前放置ORDER BY。
Here 有关此语法的更多信息。
答案 1 :(得分:0)
在ORDER BY
的最后一次查询之前,您不能包含UNION
。
答案 2 :(得分:0)
您只能在查询中所有设置操作的末尾包含ORDER BY子句