SQL Server:UNION ALL和两个选择问题

时间:2014-04-30 16:45:50

标签: sql sql-server select union union-all

我对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')

非常感谢提供任何帮助,迈克。

3 个答案:

答案 0 :(得分:3)

请删除ORDER BY并将其添加到最后。您不能在UNION / UNION ALL之前放置ORDER BY。

Here 有关此语法的更多信息。

答案 1 :(得分:0)

ORDER BY的最后一次查询之前,您不能包含UNION

答案 2 :(得分:0)

您只能在查询中所有设置操作的末尾包含ORDER BY子句

相关问题