- 浏览: 1882734 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (514)
- OPEN (41)
- WARN (33)
- EXPER (16)
- RESOURCE (7)
- TOOL (4)
- DWR (10)
- Struts1.x (10)
- Ibtais (18)
- MyEclipse (30)
- Sql Server (64)
- Tomcat (7)
- APACHE (4)
- JSP (18)
- SERVLET (6)
- ENGLISH (0)
- ECSide (8)
- JasperReports (7)
- JAVA (24)
- JS (42)
- XML (26)
- CVS (8)
- Mind (1)
- JQUERY (2)
- IBATIS (6)
- PROJECT (0)
- STRUTS2 (0)
- PROXOOL (0)
- SPRING (4)
- Hibernate (0)
- SSI (0)
- JBPM (11)
- FLEX (3)
- JSON (2)
- GWT (1)
- jeecms v3 (1)
- Flash (2)
- DATA (1)
- ORACLE (3)
- 查询oracle 中逗号分隔字符串中所有值 (1)
最新评论
-
小小西芹菜:
GoEasy web三步轻松实现web实时推送1. 引入goe ...
服务器推送技术 java -
kg_1997:
这个方法太棒了,可以不用to_date函数,实在是棒!!!
java/oracle日期处理 -
wodesunday:
:idea:
SQL的分段统计查询语句 -
wodesunday:
引用
SQL的分段统计查询语句 -
BlueSkator:
讲的有点浅,没有深入进去
tomcat需要的重新发布和重启服务器的几种情况
非常巧妙的SQL统计,作者(嘿嘿,不是我哦)Jarry
SQL统计,按月分组统计,有时候有些月份没有数据, =============================================
-- 功能: 年度个人社保缴费清单
-- 作者: Jarry
-- 完成日期: 2008.3.13
-- =============================================
CREATE PROCEDURE [dbo].[proc_bg_SecurityYearPersonReport]
(
@Year nvarchar(4),
@StaffID int
)
AS
BEGIN
SELECT
(CONVERT(varchar,mMonth)+'月') AS 'Month',
b.CompanyPension,b.PersonPension,b.CompanyMedical,
b.PersonMedical,b.Maternity,b.WorkInjury,b.Unemployment
FROM
(SELECT 1 AS 'mMonth'
UNION SELECT 2 AS 'mMonth'
UNION SELECT 3 AS 'mMonth'
UNION SELECT 4 AS 'mMonth'
UNION SELECT 5 AS 'mMonth'
UNION SELECT 6 AS 'mMonth'
UNION SELECT 7 AS 'mMonth'
UNION SELECT 8 AS 'mMonth'
UNION SELECT 9 AS 'mMonth'
UNION SELECT 10 AS 'mMonth'
UNION SELECT 11 AS 'mMonth'
UNION SELECT 12 AS 'mMonth') m
LEFT JOIN
(
SELECT PayDate,sum(CompanyPension) CompanyPension,
sum(PersonPension) PersonPension,sum(CompanyMedical) CompanyMedical,
sum(PersonMedical) PersonMedical,sum(Maternity) Maternity,
sum(WorkInjury) WorkInjury,
sum(Unemployment) Unemployment FROM TB_Insurance
WHERE staID=@StaffID AND substring(cast(PayDate as nvarchar(6)),0,5)=@Year
GROUP BY PayDate
) b
on m.mMonth=convert(int,substring(convert(varchar,b.payDate),5,7))
END
GO
结果:
1月 NULL NULL NULL NULL NULL NULL NULL
2月 2345.00 236.00 2345.00 .00 .00 234.00 2345.00
3月 420.00 420.00 420.00 420.00 420.00 420.00 420.00
4月 NULL NULL NULL NULL NULL NULL NULL
5月 NULL NULL NULL NULL NULL NULL NULL
6月 NULL NULL NULL NULL NULL NULL NULL
7月 NULL NULL NULL NULL NULL NULL NULL
8月 .00 .00 .00 .00 .00 .00 .00
9月 NULL NULL NULL NULL NULL NULL NULL
10月 NULL NULL NULL NULL NULL NULL NULL
11月 NULL NULL NULL NULL NULL NULL NULL
12月 NULL NULL NULL NULL NULL NULL NULL
=================================================================================
-- =============================================
-- 功能: 年度社保费缴交人数及金额一览表
-- 作者: Jarry
-- 完成日期: 2008.3.13
-- =============================================
CREATE PROCEDURE [dbo].[proc_bg_SecurityYearCountReport]
(
@Year nvarchar(4)
)
AS
BEGIN
SELECT
(CONVERT(varchar,mMonth)+'月') AS 'Month',
b.Pension,b.PensionCount,b.Medical,
b.MedicalCount,b.Maternity,b.MaternityCount,
b.WorkInjury,b.WorkInjuryCount,b.Unemployment,b.UnemploymentCount
FROM
(SELECT 1 AS 'mMonth'
UNION SELECT 2 AS 'mMonth'
UNION SELECT 3 AS 'mMonth'
UNION SELECT 4 AS 'mMonth'
UNION SELECT 5 AS 'mMonth'
UNION SELECT 6 AS 'mMonth'
UNION SELECT 7 AS 'mMonth'
UNION SELECT 8 AS 'mMonth'
UNION SELECT 9 AS 'mMonth'
UNION SELECT 10 AS 'mMonth'
UNION SELECT 11 AS 'mMonth'
UNION SELECT 12 AS 'mMonth') m
LEFT JOIN
(
SELECT PayDate,sum(CompanyPension)+sum(PersonPension) Pension,
sum(case when CompanyPension+PersonPension>0 then 1 else 0 end) PensionCount,
sum(CompanyMedical)+sum(PersonMedical) Medical,
sum(case when CompanyMedical+PersonMedical>0 then 1 else 0 end) MedicalCount,
sum(Maternity) Maternity,
sum(case when Maternity>0 then 1 else 0 end) MaternityCount,
sum(WorkInjury) WorkInjury,
sum(case when WorkInjury>0 then 1 else 0 end) WorkInjuryCount,
sum(Unemployment) Unemployment,
sum(case when Unemployment>0 then 1 else 0 end) UnemploymentCount
FROM TB_Insurance
where substring(cast(PayDate as nvarchar(6)),0,5)=@Year
GROUP BY PayDate
) b
on m.mMonth=convert(int,substring(convert(varchar,b.payDate),5,7))
END
GO
达到如下效果
月 份 养 老 工 伤 医 疗 失 业 生 育
金 额 人 数 金 额 人 数 金 额 人 数 金 额 人 数 金 额 人 数
一月
二月
三月
四月
五月
六月
七月
八月
九月
十月
十一月
十二月
注:此处日期字段是int型:200808,200810
SQL统计,按月分组统计,有时候有些月份没有数据, =============================================
-- 功能: 年度个人社保缴费清单
-- 作者: Jarry
-- 完成日期: 2008.3.13
-- =============================================
CREATE PROCEDURE [dbo].[proc_bg_SecurityYearPersonReport]
(
@Year nvarchar(4),
@StaffID int
)
AS
BEGIN
SELECT
(CONVERT(varchar,mMonth)+'月') AS 'Month',
b.CompanyPension,b.PersonPension,b.CompanyMedical,
b.PersonMedical,b.Maternity,b.WorkInjury,b.Unemployment
FROM
(SELECT 1 AS 'mMonth'
UNION SELECT 2 AS 'mMonth'
UNION SELECT 3 AS 'mMonth'
UNION SELECT 4 AS 'mMonth'
UNION SELECT 5 AS 'mMonth'
UNION SELECT 6 AS 'mMonth'
UNION SELECT 7 AS 'mMonth'
UNION SELECT 8 AS 'mMonth'
UNION SELECT 9 AS 'mMonth'
UNION SELECT 10 AS 'mMonth'
UNION SELECT 11 AS 'mMonth'
UNION SELECT 12 AS 'mMonth') m
LEFT JOIN
(
SELECT PayDate,sum(CompanyPension) CompanyPension,
sum(PersonPension) PersonPension,sum(CompanyMedical) CompanyMedical,
sum(PersonMedical) PersonMedical,sum(Maternity) Maternity,
sum(WorkInjury) WorkInjury,
sum(Unemployment) Unemployment FROM TB_Insurance
WHERE staID=@StaffID AND substring(cast(PayDate as nvarchar(6)),0,5)=@Year
GROUP BY PayDate
) b
on m.mMonth=convert(int,substring(convert(varchar,b.payDate),5,7))
END
GO
结果:
1月 NULL NULL NULL NULL NULL NULL NULL
2月 2345.00 236.00 2345.00 .00 .00 234.00 2345.00
3月 420.00 420.00 420.00 420.00 420.00 420.00 420.00
4月 NULL NULL NULL NULL NULL NULL NULL
5月 NULL NULL NULL NULL NULL NULL NULL
6月 NULL NULL NULL NULL NULL NULL NULL
7月 NULL NULL NULL NULL NULL NULL NULL
8月 .00 .00 .00 .00 .00 .00 .00
9月 NULL NULL NULL NULL NULL NULL NULL
10月 NULL NULL NULL NULL NULL NULL NULL
11月 NULL NULL NULL NULL NULL NULL NULL
12月 NULL NULL NULL NULL NULL NULL NULL
=================================================================================
-- =============================================
-- 功能: 年度社保费缴交人数及金额一览表
-- 作者: Jarry
-- 完成日期: 2008.3.13
-- =============================================
CREATE PROCEDURE [dbo].[proc_bg_SecurityYearCountReport]
(
@Year nvarchar(4)
)
AS
BEGIN
SELECT
(CONVERT(varchar,mMonth)+'月') AS 'Month',
b.Pension,b.PensionCount,b.Medical,
b.MedicalCount,b.Maternity,b.MaternityCount,
b.WorkInjury,b.WorkInjuryCount,b.Unemployment,b.UnemploymentCount
FROM
(SELECT 1 AS 'mMonth'
UNION SELECT 2 AS 'mMonth'
UNION SELECT 3 AS 'mMonth'
UNION SELECT 4 AS 'mMonth'
UNION SELECT 5 AS 'mMonth'
UNION SELECT 6 AS 'mMonth'
UNION SELECT 7 AS 'mMonth'
UNION SELECT 8 AS 'mMonth'
UNION SELECT 9 AS 'mMonth'
UNION SELECT 10 AS 'mMonth'
UNION SELECT 11 AS 'mMonth'
UNION SELECT 12 AS 'mMonth') m
LEFT JOIN
(
SELECT PayDate,sum(CompanyPension)+sum(PersonPension) Pension,
sum(case when CompanyPension+PersonPension>0 then 1 else 0 end) PensionCount,
sum(CompanyMedical)+sum(PersonMedical) Medical,
sum(case when CompanyMedical+PersonMedical>0 then 1 else 0 end) MedicalCount,
sum(Maternity) Maternity,
sum(case when Maternity>0 then 1 else 0 end) MaternityCount,
sum(WorkInjury) WorkInjury,
sum(case when WorkInjury>0 then 1 else 0 end) WorkInjuryCount,
sum(Unemployment) Unemployment,
sum(case when Unemployment>0 then 1 else 0 end) UnemploymentCount
FROM TB_Insurance
where substring(cast(PayDate as nvarchar(6)),0,5)=@Year
GROUP BY PayDate
) b
on m.mMonth=convert(int,substring(convert(varchar,b.payDate),5,7))
END
GO
达到如下效果
月 份 养 老 工 伤 医 疗 失 业 生 育
金 额 人 数 金 额 人 数 金 额 人 数 金 额 人 数 金 额 人 数
一月
二月
三月
四月
五月
六月
七月
八月
九月
十月
十一月
十二月
注:此处日期字段是int型:200808,200810
发表评论
-
ORACLE中使用递归查询 (
2012-12-27 16:35 978在数据库查询中常常会碰到要查询树形结构的数据,需要用一个字段的 ... -
函数与存储过程区别
2011-06-01 18:17 1319本质上没区别。只是 ... -
SQL Server2000安装常见问题
2011-05-25 14:15 1494一:解决安装sql时文件挂起的问题: (1)、点击“开始》运 ... -
MySQL语句优化的原则
2011-04-12 14:21 10001、使用索引来更快 ... -
转SQL-group by学习
2011-04-12 14:18 1272在select 语句中可以使用group by 子句将行划分成 ... -
SQL Select语句完整的执行顺序:
2011-04-12 14:15 1401SQL Select语句完整的执行顺序: 1、from子句组 ... -
SQL截取字符串(substring与patindex的使用)
2011-03-31 13:55 5715SQL截取字符串(substring与patinde ... -
SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL
2011-03-16 09:21 1315先看下面一个嵌套的查 ... -
SQL CHARINDEX (Transact-SQL)
2010-12-06 09:05 1480返回字符串中指定表达式的开始位置。 Transact-SQ ... -
SQL Server基本函数
2010-12-06 08:53 1611SQL Server基本函数 1.字符串函数 : ... -
SQL2005级联删除,层叠,设置空,设置默认值
2010-12-01 15:46 2451浅谈SQL SERVER 2005 之引用 ... -
sql 显示插入主键
2010-10-22 16:28 1309set identity_insert [T_ADMINTYP ... -
取小数
2010-10-22 16:12 1306使用这个方式来计算 SELECT convert(decima ... -
oracle 创建表空间
2010-10-12 11:28 1535一.创建表空间 CREATE SMALLFILE TABLES ... -
sql 约束大全
2010-09-27 16:28 1367--------添加主键约束(bookid作为主键) alt ... -
sql 主外键语法
2010-09-27 08:39 1741alter table dbo.t_commAtta ... -
在SQL Server中,关于with as使用介绍
2010-09-26 13:32 36092一.WITH AS的含义 ... -
procedure 存储过程多个返回测试
2010-09-01 10:26 1189create procedure test(@temp1 va ... -
sql 实现按月份,季度统计报表
2010-08-30 12:01 14971呵呵,我们在处理设计到日期统计时候经常会按照年度,季度,月份统 ... -
SQL Server DATEPART() 不能言
2010-08-30 11:29 1826今天做按月份,按年度,按季度统计报表,后来发现了最简单最可扩展 ...
相关推荐
在SQL Server中,查询两个日期之间的所有月份是一个常见的需求,特别是在数据分析、报表生成或时间序列分析等场景。本文将详细讲解如何使用SQL Server实现这一功能,以满足上述标题和描述中的要求。 首先,我们需要...
例如,按月份统计订单数量: ```sql SELECT YEAR(date_column), MONTH(date_column), COUNT(*) FROM table GROUP BY YEAR(date_column), MONTH(date_column); ``` 这会返回每一年每个月的订单总数。 4. **...
例如,有时我们需要获取当前月份的所有日期,这对于财务报表、数据统计等应用场景尤为重要。本文将详细解释如何通过Oracle SQL语句实现这一功能,并对其中涉及的关键概念和技术进行深入探讨。 ### Oracle SQL查询...
这些函数对于日期的分析和比较非常有用,比如统计某个月份的数据总量。 ### 三、日期格式化 在.NET中,我们可以使用`DateTime.ToString()`方法结合不同的格式字符串来定制日期的显示格式,如`"f"`表示完整日期和...
用于显示每月第一天及最后一天的日期值,有利于进行日期数据信息的统计
一个SQL存储过程: 出勤资料查询 根据月份产生出勤人员月份日历报表 用到2个表:M_Users(用户表)、X_ITAttendance(用户出勤资料表),查询出的格式如桌面日历,日期不存在的以NULL值显示,存在的显示总的出勤时间...
虽然部分示例代码似乎是特定于Progress 4GL或类似编程环境的,但我们可以从中提炼出普遍适用的SQL日期函数原理和技巧。下面,我们将深入解析并解释这些函数的意义和应用场景。 ### 1. 获取年份的两位数字表示 函数...
在SQL中,对数据进行按月统计是一种常见的需求,特别是在数据分析和报告生成中。这个问题的描述涉及到了如何从一个包含日期和数量的表格中提取每月的总和。表的结构非常简单,有两个字段:`qty`(数量)和`date`...
例如,按月份统计每种产品的销售总额: ```sql SELECT MONTH(date_column), SUM(sales_amount) FROM table GROUP BY MONTH(date_column); ``` 六、实战应用 在报表统计中,可能需要结合多个表,使用JOIN操作来获取...
现在我们来探讨如何按照月份和小时进行分组统计: 1. **按月分组统计**: 当我们想根据年份和月份进行统计时,可以使用`CONVERT`函数和`DATEPART`函数。但这种方法会忽略没有记录的月份。为了解决这个问题,我们...
根据提供的文件信息,我们可以了解到这段代码的主要目的是在SQL Server中计算出指定月份的所有自然周的起始和结束日期,并将这些信息存储在一个名为`monthWeekBetween`的表中。接下来,我们将详细解释其中的关键概念...
又如在报表中需要展示每个月的销售总额,可以使用 `DATEPART()` 函数提取出每个订单的月份,然后按月进行分组统计。 通过这些函数的应用,我们可以更加灵活地操作和分析日期相关的数据,从而提高工作效率并更好地...
在上述提到的相关文章中,你可以找到更多关于SQL Server日期和时间处理的实用技巧和示例,包括获取日期的年月日部分、按月或小时分组统计、处理XML数据、连接到远程服务器、数据导入导出、备份和恢复,以及查询...
在SQL中,对数据进行日、周、月、年统计是一种常见的...总结来说,SQL提供了丰富的函数和语法来处理日期和时间,以便于我们对数据进行不同粒度的统计分析。理解并熟练运用这些函数,对于数据分析和报表生成至关重要。
- 接着检查截止日期的月份是否大于出生日期的月份: - 如果是,则年龄增加 `1`。 - 如果不是,则继续比较月份是否相同。 - 如果月份相同,则进一步比较日期部分: - 如果截止日期的日份大于等于出生日期的日份...
3. **条件查询**:在`payday1.sql`中,可能会包含`WHERE`子句,用于筛选满足特定条件的数据,例如找出所有在特定月份或特定年份发放工资的记录。 4. **聚合函数**:在`payday2.sql`中,可能使用了`COUNT()`, `SUM()...
通过以上分析可以看出,给定的SQL公式是一种高效、简洁的方法,用于计算给定月份所在的季度。它不仅适用于SQL环境,在其他编程语言中也有广泛的应用前景。此外,此公式的优势在于其纯粹依赖于数学运算,避免了复杂的...
- 在SQL查询语句中,`MONTH()`函数通常用来对日期或日期时间类型的字段进行操作,以获取其中的月份值。这对于按照不同的月份进行数据聚合非常有帮助。 #### 2. **CASE WHEN** 结构: - `CASE WHEN` 是一种条件...