【问题标题】:SQL Server: issue with UNION ALL and two SelectsSQL Server:UNION ALL 和两个 Select 的问题
【发布时间】:2014-06-17 02:31:38
【问题描述】:

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

非常感谢您在此提供的任何帮助,迈克。

【问题讨论】:

  • 排序在最后。

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


【解决方案1】:

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

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

【讨论】:

  • 感谢您的帮助 - 成功了! - 也感谢所有其他帖子。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多