博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态SQL应用小列子
阅读量:5913 次
发布时间:2019-06-19

本文共 1654 字,大约阅读时间需要 5 分钟。

 呵呵,几乎成标题党了,今天要写个脚本查询7天内所有有登录玩家的数据,要求按注册日期统计,虽然是个简单的问题,但是关键是用户表有30个,分别是 user0, user1......到user29 ,光是把它们UNION ALL起来,我都够郁闷了,你想象下脚本有多长吧,一大堆堆在那儿,光是复制都让你难以忍受。 
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SELECT Id,CONVERT(VARCHAR(10),Create_Time, 120), Last_Login_Time FROM user0UNION ALLSELECT Id,CONVERT(VARCHAR(10),Create_Time, 120), Last_Login_Time FROM user1UNION ALLSELECT Id,CONVERT(VARCHAR(10),Create_Time, 120), Last_Login_Time FROM user2.........

 

 呵呵,下面是我用动态SQL 改写的,呵呵,简洁多了

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE @cmdText VARCHAR(8000);DECLARE @userIndex INT;SET @cmdText = '';SET @userIndex = 0;WHILE @userIndex <30BEGIN    IF (@userIndex != 29)            SELECT @cmdText = @cmdText + 'SELECT Id,Create_Time, Last_Login_Time FROM '                          + '  dbo.user' + CONVERT(VARCHAR,@userIndex)                          + '  UNION ALL' + CHAR(10); --换行    ELSE            SELECT @cmdText = @cmdText + 'SELECT Id,Create_Time, Last_Login_Time FROM '                         +  'dbo.user' + CONVERT(VARCHAR,@userIndex) ;        SET @userIndex = @userIndex + 1;END;SELECT @cmdText = 'SELECT CONVERT(VARCHAR(10),T.Create_Time, 120) AS Create_Time ,COUNT(0) AS RecordNum FROM ('             + @cmdText +             ') T WHERE DATEDIFF(d,Last_Login_Time,GETDATE()) < 7 GROUP BY CONVERT(VARCHAR(10),Create_Time, 120) ';--PRINT     @cmdText    EXEC (@cmdText);
这里得提提
 CHAR(10)这个,个人感觉非常有用,刚开始的时候,没有加换行符,把这段脚本输出的时候,格式比较乱,很多时候,复杂的动态脚本,都需要输出,查看,调试一番, 就像PRINT     @cmdText   那样,如果输出格式比较乱,自己调整需要花费一定功夫,在写的时候,如果注意脚本格式了,那就要省很多功夫了。而且也有助于以后维护,修改。

转载地址:http://upqpx.baihongyu.com/

你可能感兴趣的文章
各种链接
查看>>
开发工程师未来应具备的能力
查看>>
spring-boot项目中如何集成使用thymeleaf
查看>>
SQL Server中查看哪些游标未释放
查看>>
Protostar format3
查看>>
[UWP]了解模板化控件(6):使用附加属性
查看>>
我的友情链接
查看>>
PowerShell Switch判断语句示例
查看>>
《Spring实战》第四版读书笔记 第一章 Spring之旅
查看>>
那些年,一起学的Java 3-3
查看>>
那些年,一起学的Java 2-4
查看>>
Java中的多态和C#中的多态的区别
查看>>
UIView之【UIViewContentMode】
查看>>
yum 及手动编译rpm包
查看>>
使用Maven运行 MyBatis Generator
查看>>
7-设计模式-代理模式
查看>>
RedHat已更改其开源许可规则
查看>>
Android零基础入门第29节:善用TableLayout表格布局,事半功倍
查看>>
element-ui 的 table后端排序
查看>>
redis集群搭建
查看>>