求查询同一表中字段变化数据

ximuse 2011-05-10 02:24:15

求查询A表中5月相比4月部门及班组发生变化的记录,不包含新增或减少的记录。


A表结构:

id 年 月 工号 姓名 部门 班组 ……
1 2011 4 1111 aaaa D1 T1 ……
2 2011 4 2222 bbbb D1 T1 ……
3 2011 4 3333 cccc D1 T1 ……
4 2011 5 1111 aaaa D2 T1 ……
5 2011 5 2222 bbbb D3 T2 ……
6 2011 5 3333 cccc D1 T1 ……
7 2011 5 4444 dddd D1 T1 ……


需要查询的结果为:
id 年 月 工号 姓名 部门 班组 ……
4 2011 5 1111 aaaa D2 T1 ……
5 2011 5 2222 bbbb D3 T2 ……




...全文
91 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ximuse 的回复:]
楼上的2位还没考虑到,我有其他字段,并且也会变化,不能考虑其他字段的变化。
[/Quote]
动态语句

ximuse 2011-05-10
  • 打赏
  • 举报
回复
楼上的2位还没考虑到,我有其他字段,并且也会变化,不能考虑其他字段的变化。
Mr_Nice 2011-05-10
  • 打赏
  • 举报
回复
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([id] int,[年] int,[月] int,[工号] int,[姓名] varchar(4),[部门] varchar(2),[班组] varchar(2))
insert [TB]
select 1,2011,4,1111,'aaaa','D1','T1' union all
select 2,2011,4,2222,'bbbb','D1','T1' union all
select 3,2011,4,3333,'cccc','D1','T1' union all
select 4,2011,5,1111,'aaaa','D2','T1' union all
select 5,2011,5,2222,'bbbb','D3','T2' union all
select 6,2011,5,3333,'cccc','D1','T1' union all
select 7,2011,5,4444,'dddd','D1','T1'

select * from [TB]

SELECT T.* FROM dbo.TB T
WHERE EXISTS(SELECT 1 FROM TB WHERE T.[姓名] = [姓名] AND T.[部门] <> [部门])
AND [月] = 5

/*
id 年 月 工号 姓名 部门 班组
4 2011 5 1111 aaaa D2 T1
5 2011 5 2222 bbbb D3 T2*/
ximuse 2011-05-10
  • 打赏
  • 举报
回复
自己解决了。好像很简单,自己脑袋没转过弯来,想复杂了。
快溜 2011-05-10
  • 打赏
  • 举报
回复
select 工号,姓名,部门,班组 from tb where 月=5
except
select 工号,姓名,部门,班组 from tb where 月=4

34,873

社区成员

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

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