欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

急救啊如何在查询的时候,判断一个表a中3条(或多条)id相同的明细数据在表a中是否有相同的3条数据

更新时间: 2014-01-05 02:17:35 责任编辑: Author_N1

 

急救啊,怎么在查询的时候,判断一个表a中3条(或多条)id相同的明细数据在表a中是否有相同的3条数据
求救啊,怎么在查询的时候,判断一个表a中3条(或多条)单据id相同的明细数据(商品id不同)在表a中是否有相同的3条数据
--参考方法--

create table [a]([djbh] varchar(10),[spid] varchar(10),[shl] int)
insert [a]
select 'bh001' ,'sp001' ,10  union all
select 'bh001' ,'sp002' ,11  union all
select 'bh001' ,'sp003' ,15  union all
select 'bh002' ,'sp001' ,10  union all
select 'bh002' ,'sp002' ,11  union all
select 'bh002' ,'sp003' ,15  union all
select 'bh003' ,'sp001' ,97  union all
select 'bh003' ,'sp003' ,98  union all
select 'bh003' ,'sp004' ,99 
select * from a

djbh       spid       shl
---------- ---------- -----------
bh001      sp001      10
bh001      sp002      11
bh001      sp003      15
bh002      sp001      10
bh002      sp002      11
bh002      sp003      15
bh003      sp001      97
bh003      sp003      98
bh003      sp004      99

(9 行受影响)

--处理测试数据
select *,row_number() over(PARTITION BY djbh order by djbh,spid) as rowid into #a from a
select * from #a


djbh       spid       shl         rowid
---------- ---------- ----------- --------------------
bh001      sp001      10          1
bh001      sp002      11          2
bh001      sp003      15          3
bh002      sp001      10          1
bh002      sp002      11          2
bh002      sp003      15          3
bh003      sp001      97          1
bh003      sp003      98          2
bh003      sp004      99          3

(9 行受影响)

--按单据编号进行分组合并
SELECT [djbh],  
(SELECT [spid]+',' FROM #a  WHERE djbh=a.djbh
  FOR XML PATH('') 
  ) AS [spid] ,
(SELECT cast([shl] as varchar(10))+',' FROM #a  WHERE djbh=a.djbh
  FOR XML PATH('') 
  ) AS [shl] 
into #b
FROM #a a  
GROUP BY [djbh]
select * from #b


djbh       spid                shl
---------- ------------------------
bh001      sp001,sp002,sp003, 10,11,15,
bh002      sp001,sp002,sp003, 10,11,15,
bh003      sp001,sp003,sp004, 97,98,99,

(3 行受影响)


--查询重复数量大于2的单据号
select djbh from 
#b a,
(select spid,shl from #b group by spid,shl having count(djbh)>=2) b
where a.spid=b.spid and a.shl=b.shl
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8095/
本文WWW.DOC100.NET DOC100.NET版权所有。