急!求一sql语句。。关于统计。

l331326473 2012-08-06 09:42:32
实现查询两个表,形成一个视图。
表一(入职表):
入职日期
2012-07-08
2012-07-12
表二(离职表):
离职日期
2012-07-06
2012-06-01
形成的查询结果如下:
年份 月份 入职人数 离职人数
2012 7 2 1
2012 6 0 1
该如何实现。
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkman_22 2012-08-06
  • 打赏
  • 举报
回复
把表结构说全一点吧。最好有示例数据。
  • 打赏
  • 举报
回复
select datepart(year,t.[日期]) '年份',datepart(month,t.[日期]) '月份',t.[入职人数],t.[离职人数] from 
(
select (case when ([入职日期] IS NOT NULL AND [离职日期] IS NOT NULL) or ([入职日期] IS NOT NULL AND [离职日期] IS NULL) THEN [入职日期]
case when [入职日期] IS NULL AND [离职日期] IS NOT NULL THEN [离职日期] END) '日期',ISNULL([入职人数],0) '入职人数',ISNULL([离职人数],0) '离职人数'
from
(
select convert(varchar(7),[入职日期],120) '入职日期',sum(convert(varchar(7),[入职日期],120)) '入职人数'
from [入职表]
GROUP BY convert(varchar(7),[入职日期],120)
) a
full join
(
select convert(varchar(7),[离职日期],120) '离职日期',sum(convert(varchar(7),[离职日期],120)) '离职人数'
from [离职表] GROUP BY convert(varchar(7),[离职日期],120))
) b
on a.[入职日期]=b.[离职日期]
) t
筱筱澄 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

这个真不难,等楼下
[/Quote]
V587
筱筱澄 2012-08-06
  • 打赏
  • 举报
回复
--> 测试数据:[入职表]
IF OBJECT_ID('[入职表]') IS NOT NULL DROP TABLE [入职表]
GO
CREATE TABLE [入职表]([入职日期] DATETIME)
INSERT [入职表]
SELECT '2012-07-08' UNION ALL
SELECT '2012-07-12'
--------------开始查询--------------------------


--> 测试数据:[离职表]
IF OBJECT_ID('[离职表]') IS NOT NULL DROP TABLE [离职表]
GO
CREATE TABLE [离职表]([离职日期] DATETIME)
INSERT [离职表]
SELECT '2012-07-06' UNION ALL
SELECT '2012-06-01'
--------------开始查询--------------------------

SELECT DISTINCT YEAR(ISNULL(a.[入职日期],b.[离职日期])) AS 年,MONTH(ISNULL(a.[入职日期],b.[离职日期])) AS 月,
(select count(*) FROM [入职表] WHERE CONVERT(VARCHAR(7),[入职日期],120)=CONVERT(VARCHAR(7),a.[入职日期],120)) AS 入职人数 ,
(select count(*) FROM [离职表] WHERE CONVERT(VARCHAR(7),[离职日期],120)=CONVERT(VARCHAR(7),b.[离职日期],120)) AS 离职人数
FROM [入职表] AS a
FULL JOIN [离职表] AS b
ON CONVERT(VARCHAR(7),a.[入职日期],120)=CONVERT(VARCHAR(7),b.[离职日期],120)
----------------结果----------------------------
/*
年 月 入职人数 离职人数
----------- ----------- ----------- -----------
2012 6 0 1
2012 7 2 1

(2 行受影响)


*/
初夏_90 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这个真不难,等楼下
[/Quote]
楼上的,
SELECT 年份,月份,sum(入职),sum(离职) FROM 表 GROUP BY 年份,月份
是这样写不?
  • 打赏
  • 举报
回复
这个真不难,等楼下

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧