将字段名和排序后的结果一块输出(bcp命令时会用到这一功能)
2014-05-20 17:16
288 查看
--背景
有时,需要用bcp命令将排序后的查询结果生成一个excel附件,放在本地。
这时,需要将字段名和排序后的查询结果一起放在本地。
--试验步骤:
SELECT '平均消耗CPU 时间(ms)'
UNION ALL
SELECT CAST( avg_elasped_time AS NVARCHAR(100))
FROM dba.dbo.bdd_temp_find_top_select_cpu
order by avg_elasped_time desc
执行报错:
消息 207,级别 16,状态 1,第 5 行
Invalid column name 'avg_elasped_time'.
消息 104,级别 16,状态 1,第 5 行
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
--在第一个SELECT 字段名后加 ’AS avg_elasped_time‘可以了。
SELECT '平均消耗CPU 时间(ms)' AS avg_elasped_time
UNION ALL
SELECT CAST( avg_elasped_time AS NVARCHAR(100))
FROM dba.dbo.bdd_temp_find_top_select_cpu
order by avg_elasped_time desc
--查询结果如下
但是发现,一个问题:
14701前面的都按降序排列了,但是14701是最大的,却排在了后面。
--改正(将行号和该字段值拼接,然后取除最后一位数的前几位):
SELECT '平均消耗CPU 时间(ms)' AS avg_elasped_time
UNION ALL
SELECT SUBSTRING(CAST( avg_elasped_time AS NVARCHAR(100)) +CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),1,LEN(avg_elasped_time))
FROM dba.dbo.bdd_temp_find_top_select_cpu
--结果如下:
--可以通过以下语句,验证上面数值的是否正确
SELECT CAST( avg_elasped_time AS NVARCHAR(100)) ,
CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),
CAST( avg_elasped_time AS NVARCHAR(100)) +CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),
SUBSTRING(CAST( avg_elasped_time AS NVARCHAR(100)) +CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),1,LEN(avg_elasped_time))
FROM dba.dbo.bdd_temp_find_top_select_cpu
--结果
有时,需要用bcp命令将排序后的查询结果生成一个excel附件,放在本地。
这时,需要将字段名和排序后的查询结果一起放在本地。
--试验步骤:
SELECT '平均消耗CPU 时间(ms)'
UNION ALL
SELECT CAST( avg_elasped_time AS NVARCHAR(100))
FROM dba.dbo.bdd_temp_find_top_select_cpu
order by avg_elasped_time desc
执行报错:
消息 207,级别 16,状态 1,第 5 行
Invalid column name 'avg_elasped_time'.
消息 104,级别 16,状态 1,第 5 行
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
--在第一个SELECT 字段名后加 ’AS avg_elasped_time‘可以了。
SELECT '平均消耗CPU 时间(ms)' AS avg_elasped_time
UNION ALL
SELECT CAST( avg_elasped_time AS NVARCHAR(100))
FROM dba.dbo.bdd_temp_find_top_select_cpu
order by avg_elasped_time desc
--查询结果如下
但是发现,一个问题:
14701前面的都按降序排列了,但是14701是最大的,却排在了后面。
--改正(将行号和该字段值拼接,然后取除最后一位数的前几位):
SELECT '平均消耗CPU 时间(ms)' AS avg_elasped_time
UNION ALL
SELECT SUBSTRING(CAST( avg_elasped_time AS NVARCHAR(100)) +CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),1,LEN(avg_elasped_time))
FROM dba.dbo.bdd_temp_find_top_select_cpu
--结果如下:
--可以通过以下语句,验证上面数值的是否正确
SELECT CAST( avg_elasped_time AS NVARCHAR(100)) ,
CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),
CAST( avg_elasped_time AS NVARCHAR(100)) +CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),
SUBSTRING(CAST( avg_elasped_time AS NVARCHAR(100)) +CAST(ROW_NUMBER() OVER (ORDER BY avg_elasped_time DESC) AS NVARCHAR(100)),1,LEN(avg_elasped_time))
FROM dba.dbo.bdd_temp_find_top_select_cpu
--结果
相关文章推荐
- shell命令:以空格为分隔符截取文件每行的第一个字符串,并用sort排序,再去掉相同的字符串,将结果输出到另一个文件
- Linux命令输出头(标题)、输出结果排序技巧
- SQL SERVER中 用FOR XML PATH将查询结果以XML输出 然后应用于 sql 合并字段功能介绍
- Linux命令输出头(标题)、输出结果排序技巧
- SQL Cookbook:二、查询结果排序(2)按多个字段排序
- 如何将linux 命令的执行结果在屏幕输出的同时保存到文件
- 如何使ssh server env命令与在本地直接执行env命令后的输出结果相同
- 用java把从数据库中查询出的结果集重新按照结果中的几个字段重新排序
- STL极简地完成“输入——排序——输出”的功能
- c#快速排序算法,输入整数,输出排序结果。
- time命令输出结果的意义
- 获取DOS命令输出结果
- 【转】C#执行命令行程序/命令并获取输出结果
- 将windows命令行的结果保存到文件 (cmd命令的重定向输出)
- [ lucene FAQ ] 检索结果怎么排序?对于不同类型(例如int型)的字段排序有什么区别吗?
- 利用冗余字段解决查询结果排序慢的问题
- 如何获得Dos窗口命令输出结果
- HOW TO:获取DOS命令输出结果
- apache下ab网站压力测试命令的参数、输出结果的中文注解
- 在WinDBG中高亮你输入的命令, 从而和命令的结果输出区分开来