sql-server - SELECT Queries with Union and order into a new temp table 不起作用
问题描述
我编写了一个 T-SQL 查询来从许多表中收集一些数据,并使用选择联合查询将这些行分成三个。执行查询时出现错误。我已附上查询,请指导我纠正错误。
SELECT *
INTO #tmpFerdeen
FROM
(SELECT
(CASE WHEN sc <> '0000' THEN sln END) AS t,
(CASE WHEN sc <> '0000' THEN crid END) AS crrid,
CASE Header
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END O,
CASE
WHEN sc <> '0000' THEN Header
END,
CASE
WHEN sc <> '0000' THEN Header+'|'+st + '|'+convert(varchar,pid) + '|' + convert(varchar, cid) + '|' +convert(varchar,cenddate )
END AS RestOfData
FROM
#tempsddd
UNION ALL
SELECT
sln t, crid crrid,
CASE Details
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END,
Details,
Details + '|' + ISNULL(CONVERT(varchar, sln), '') + '|' + '|' + '|' + '|'
+ ISNULL(CONVERT(varchar, ah), '') + '|'
+ ISNULL(sfne, '') + '|'
+ ISNULL(smne, '') + '|'
+ ISNULL(slne, '')
FROM
#tempsddd
UNION ALL
SELECT
(CASE WHEN sc <> '0000' THEN sln END) AS t,
(CASE WHEN sc <> '0000' THEN crid END) AS crrid,
CASE Footer
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END,
CASE WHEN sc <> '0000' THEN Footer END,
CASE WHEN sc <> '0000' THEN Footer + '|' + sc END
FROM
#tempsddd
ORDER BY
crrid,
CASE Header
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END)
请指导我这样做。
解决方案
我认为这是不正确的语法,因为“Order by”语句,你应该把 order by 放在括号外,你也可以在 order by 之后使用 case 所以请检查 case 语句是否正确
推荐阅读
- ios - Swift 4 和 iOS 11:一个使用 NavigationController 的透明 NavigationBar
- oracle - 在 SQL 中将多行汇总为一行
- django - Django - 黑白差异 Django-rpy2 和 rpy2
- javascript - 谷歌表格粘贴格式
- java - Libgdx 设置正射相机
- python-3.x - 换行下的缩进
- javascript - .map 不是函数 - 反应
- linux - 如何在每个间隔上输出一段时间的迭代/进度或监视循环?
- javascript - 在 API 中发出请求并计算结果
- jquery - 完成选择时的jQuery多选事件