跟日期有关的两条经典SQL语句 (转)
来源:互联网 发布:class object java 编辑:程序博客网 时间:2024/05/21 22:33
SELECT DAY(DATEADD(dd, -DAY('2004-02-13'), DATEADD(mm, 1, '2004-02-13'))) AS 'Day Number'
2.少记录变成多条记录问题
有表tbl
日期 收入 支出
2004-02-11 00:00:00 60 45
2004-03-01 00:00:00 60 45
2004-03-02 00:00:00 40 50
2004-03-05 00:00:00 50 40
/* 测试数据: Create Table tbl([日期] smalldatetime,[收入] int ,[支出] int) Insert Into tbl |
要得到的结果:
日期 收入 支出 余额
2004-02-01 00:00:00 NULL NULL NULL
2004-02-02 00:00:00 NULL NULL NULL
2004-02-03 00:00:00 NULL NULL NULL
2004-02-04 00:00:00 NULL NULL NULL
2004-02-05 00:00:00 NULL NULL NULL
2004-02-06 00:00:00 NULL NULL NULL
2004-02-07 00:00:00 NULL NULL NULL
2004-02-08 00:00:00 NULL NULL NULL
2004-02-09 00:00:00 NULL NULL NULL
2004-02-10 00:00:00 NULL NULL NULL
2004-02-11 00:00:00 60 45 15
2004-02-12 00:00:00 NULL NULL 15
2004-02-13 00:00:00 NULL NULL 15
2004-02-14 00:00:00 NULL NULL 15
2004-02-15 00:00:00 NULL NULL 15
2004-02-16 00:00:00 NULL NULL 15
2004-02-17 00:00:00 NULL NULL 15
2004-02-18 00:00:00 NULL NULL 15
2004-02-19 00:00:00 NULL NULL 15
2004-02-20 00:00:00 NULL NULL 15
2004-02-21 00:00:00 NULL NULL 15
2004-02-22 00:00:00 NULL NULL 15
2004-02-23 00:00:00 NULL NULL 15
2004-02-24 00:00:00 NULL NULL 15
2004-02-25 00:00:00 NULL NULL 15
2004-02-26 00:00:00 NULL NULL 15
2004-02-27 00:00:00 NULL NULL 15
2004-02-28 00:00:00 NULL NULL 15
2004-02-29 00:00:00 NULL NULL 15
2004-03-01 00:00:00 60 45 30
2004-03-02 00:00:00 40 50 20
2004-03-03 00:00:00 NULL NULL 20
2004-03-04 00:00:00 NULL NULL 20
2004-03-05 00:00:00 50 40 30
2004-03-06 00:00:00 NULL NULL 30
2004-03-07 00:00:00 NULL NULL 30
2004-03-08 00:00:00 NULL NULL 30
2004-03-09 00:00:00 NULL NULL 30
2004-03-10 00:00:00 NULL NULL 30
2004-03-11 00:00:00 NULL NULL 30
2004-03-12 00:00:00 NULL NULL 30
2004-03-13 00:00:00 NULL NULL 30
2004-03-14 00:00:00 NULL NULL 30
2004-03-15 00:00:00 NULL NULL 30
2004-03-16 00:00:00 NULL NULL 30
2004-03-17 00:00:00 NULL NULL 30
2004-03-18 00:00:00 NULL NULL 30
2004-03-19 00:00:00 NULL NULL 30
2004-03-20 00:00:00 NULL NULL 30
2004-03-21 00:00:00 NULL NULL 30
2004-03-22 00:00:00 NULL NULL 30
2004-03-23 00:00:00 NULL NULL 30
2004-03-24 00:00:00 NULL NULL 30
2004-03-25 00:00:00 NULL NULL 30
2004-03-26 00:00:00 NULL NULL 30
2004-03-27 00:00:00 NULL NULL 30
2004-03-28 00:00:00 NULL NULL 30
2004-03-29 00:00:00 NULL NULL 30
2004-03-30 00:00:00 NULL NULL 30
2004-03-31 00:00:00 NULL NULL 30
答案:
SELECT Y.[日期], tbl.[收入], tbl.[支出], ( SELECT SUM(ISNULL(tbl.[收入], 0)-ISNULL(tbl.[支出], 0)) FROM tbl WHERE [日期]<=Y.[日期]) AS [余额] FROM tbl RIGHT JOIN ( SELECT DATEADD(dd, N.i, DATEADD(dd, 1-DAY(m.MinDay), m.MinDay)) AS [日期] FROM ( SELECT 0 AS i |
UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31 ) N, ( SELECT MIN(日期) AS MinDay FROM tbl GROUP BY DATEDIFF(month, 0, 日期) ) M WHERE DATEDIFF(mm, DATEADD(dd, N.i, DATEADD(dd, 1-DAY(m.MinDay), m.MinDay)), M.MinDay)=0) AS Y ON tbl.[日期]=Y.日期 |
- 跟日期有关的两条经典SQL语句 (转)
- 跟日期有关的两条经典SQL语句
- 跟日期有关的两条经典SQL语句
- 跟日期有关的两条经典SQL语句
- 两条sql语句
- 两条巧妙的SQL语句
- 30条经典的SQL语句
- 30条经典的SQL语句
- 30条经典的SQL语句
- 30条经典的SQL语句
- 30条经典的SQL语句
- 两条实用sql语句
- 两条关于生成排名的SQL语句
- Sql处理两条相邻的语句(比较大小)
- 对sql进行性能分析的两条语句
- 两条速度相差1350倍的sql语句
- 比较两条SQL语句运行时间
- sql有关日期的实现
- 多层数据库开发十二:使用数据控件 选择自 CYRTSOFT 的 Blog
- 多层数据库开发十三:剖析几个数据库应用程序 选择自 CYRTSOFT 的 Blog
- 多层数据库开发十四:剖析几个MIDAS示范程序 选择自 CYRTSOFT 的 Blog
- 管理中的人际交往方法
- DELPHI常用函数集及简要范例 (转)
- 跟日期有关的两条经典SQL语句 (转)
- 双网卡与Oracle listener(监听器)服务的启动的关系
- 用Delphi制作DLL的方法(转)
- 日常blog发布于MSN Space
- 第一次进入这个论坛,请大家多多指教!我喜欢学JAVA
- Smart Client 高级开发视频教程
- 在Linux(Fedora Core 2)下编译uC/OS-II的问题!
- 介绍微软一个罕为人知的无敌命令
- 去除DemoShield项目文件中的密码