查询语句,求解答 !

goodxushi 2010-10-14 02:18:54
序号 单别 单号 合同号 总量 总序号 批号
1 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.014 20100831
2 51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.022 20100831
3 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.015 20100831
4 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.015 20100831
5 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.002 20100831
6 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.003 20100831
7 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.004 20100831
8 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.005 20100831
9 51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
10 51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
11 51S5 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
12 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.021 20100831
13 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.001 20100831
14 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.001 20100831
15 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.003 20100831
16 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.004 20100831
17 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.005 20100831
18 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.006 20100831

要求:查询出在单别和单号相同的情况下总序号重复的记录。
上述的查询结果应为:序号3和4、9和10、13和14
...全文
109 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQLCenter 2010-10-14
  • 打赏
  • 举报
回复
#7

select * from tb t where
(select count(1) from tb where 单别=t.单别 and 单号=t.单号 and 总序号=t.总序号) > 1
kevn 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 goodxushi 的回复:]
楼上各位不好意思 再请教:如果此表中没有“序号”此列 , 那查询语句又该如何写呢??

单别 单号 合同号 总量 总序号 批号
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.014 20100831
51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.02……
[/Quote]

所谓的总序号是哪来的?你这个排列的顺序?那你就加序号,row_number()
goodxushi 2010-10-14
  • 打赏
  • 举报
回复
楼上各位不好意思 再请教:如果此表中没有“序号”此列 , 那查询语句又该如何写呢??

单别 单号 合同号 总量 总序号 批号
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.014 20100831
51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.022 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.015 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.015 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.002 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.003 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.004 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.005 20100831
51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
51S5 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
51S2 100831137 1100752-31 131.82 221.1100752-31.0001.002.021 20100831
51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.001 20100831
51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.001 20100831
51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.003 20100831
51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.004 20100831
51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.005 20100831
51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.006 20100831
要求:查询出在单别和单号相同的情况下总序号重复的记录。
上述的查询结果应为:序号3和4、9和10、13和14的记录
qifachen 2010-10-14
  • 打赏
  • 举报
回复
select max(序号) from tb group by 单别,单号 having count(序号)>1
kevn 2010-10-14
  • 打赏
  • 举报
回复
select max(序号) from tb group by 单别,单号 having count(序号)>1

fpzgm 2010-10-14
  • 打赏
  • 举报
回复
都对。。
SQLCenter 2010-10-14
  • 打赏
  • 举报
回复
--> 测试数据:#
if object_id('tempdb.dbo.#') is not null drop table #
create table #(序号 int, 单别 varchar(8), 单号 int, 合同号 varchar(10), 总量 numeric(5,2), 总序号 varchar(27), 批号 int)
insert into #
select 1, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.001.014', '20100831' union all
select 2, '51S2', 100831138, '1100752-31', 131.82, '221.1100752-31.0001.003.022', '20100831' union all
select 3, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.001.015', '20100831' union all
select 4, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.001.015', '20100831' union all
select 5, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.002.002', '20100831' union all
select 6, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.002.003', '20100831' union all
select 7, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.002.004', '20100831' union all
select 8, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.002.005', '20100831' union all
select 9, '51S2', 100831138, '1100752-31', 131.82, '221.1100752-31.0001.003.023', '20100831' union all
select 10, '51S2', 100831138, '1100752-31', 131.82, '221.1100752-31.0001.003.023', '20100831' union all
select 11, '51S5', 100831138, '1100752-31', 131.82, '221.1100752-31.0001.003.023', '20100831' union all
select 12, '51S2', 100831137, '1100752-31', 131.82, '221.1100752-31.0001.002.021', '20100831' union all
select 13, '51S2', 100831136, '1100752-31', 131.82, '221.1100752-31.0001.001.001', '20100831' union all
select 14, '51S2', 100831136, '1100752-31', 131.82, '221.1100752-31.0001.001.001', '20100831' union all
select 15, '51S2', 100831136, '1100752-31', 131.82, '221.1100752-31.0001.001.003', '20100831' union all
select 16, '51S2', 100831136, '1100752-31', 131.82, '221.1100752-31.0001.001.004', '20100831' union all
select 17, '51S2', 100831136, '1100752-31', 131.82, '221.1100752-31.0001.001.005', '20100831' union all
select 18, '51S2', 100831136, '1100752-31', 131.82, '221.1100752-31.0001.001.006', '20100831'

select * from # t where
exists (select 1 from # where 单别=t.单别 and 单号=t.单号 and 总序号=t.总序号 and 序号<>t.序号)

/*
序号 单别 单号 合同号 总量 总序号 批号
----------- -------- ----------- ---------- ------ --------------------------- -----------
3 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.015 20100831
4 51S2 100831137 1100752-31 131.82 221.1100752-31.0001.001.015 20100831
9 51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
10 51S2 100831138 1100752-31 131.82 221.1100752-31.0001.003.023 20100831
13 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.001 20100831
14 51S2 100831136 1100752-31 131.82 221.1100752-31.0001.001.001 20100831
*/
SQLCenter 2010-10-14
  • 打赏
  • 举报
回复
select * from tb t where exists (select 1 from tb where 单别=t.单别 and 单号=t.单号 and 总序号=t.总序号 and 序号<>t.序号)
喜-喜 2010-10-14
  • 打赏
  • 举报
回复
select a.序号 as 序号1,b.序号 as 序号2 from tb a inner join tb b on a.单别=b.单别 and a.单号=b.单号 and a.总序号=b.总序号 and a.序号<>b.序号

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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