当前位置: 代码迷 >> Sql Server >> 请问一个有关问题SQL的有关问题,多谢
  详细解决方案

请问一个有关问题SQL的有关问题,多谢

热度:62   发布时间:2016-04-27 11:54:52.0
请教一个问题SQL的问题,谢谢
SQL code
测试数据/*ID    日期    客户名称    流水单号int(主键)    datetime    varchar(100)    varchar(20)1    2012/7/18     东莞港有限公司广州分公司    2    2012/7/18     佛山彤鞋业有限公司    3    2012/7/18     佛山彤鞋业有限公司    4    2012/7/18     佛山彤鞋业有限公司    5    2012/7/18     广东发克汽车用品有限公司    6    2012/7/18     广东发克汽车用品有限公司    7    2012/7/18     广东发克汽车用品有限公司    8    2012/7/18     广东发克汽车用品有限公司    9    2012/7/18     广东发克汽车用品有限公司    10    2012/7/18     广州南大酒店有限公司    11    2012/7/18     广州南大酒店有限公司    12    2012/7/18     河源市源区宇华印刷厂    13    2012/7/18     河源市源区宇华印刷厂    14    2012/7/18     河源市源区宇华印刷厂    15    2012/7/18     河源市源区宇华印刷厂16    2012/7/18     河源市源区宇华印刷厂17    2012/7/18     河源市源区宇华印刷厂18    2012/7/18     河源市源区宇华印刷厂 */根据相同的客户名称生成一样的流水单号(格式:DH+年+月+日+三位流水:DH120719001),需要考虑当天产生的最大流水单号在向上面累加;得出如果结果/*ID    日期    客户名称    流水单号int(主键)    datetime    varchar(100)    varchar(20)1    2012/7/18     东莞港有限公司广州分公司    DH1207190012    2012/7/18     佛山彤鞋业有限公司    DH1207190023    2012/7/18     佛山彤鞋业有限公司    DH1207190024    2012/7/18     佛山彤鞋业有限公司    DH1207190025    2012/7/18     广东发克汽车用品有限公司    DH1207190036    2012/7/18     广东发克汽车用品有限公司    DH1207190037    2012/7/18     广东发克汽车用品有限公司    DH1207190038    2012/7/18     广东发克汽车用品有限公司    DH1207190039    2012/7/18     广东发克汽车用品有限公司    DH12071900310    2012/7/18     广州南大酒店有限公司    DH12071900411    2012/7/18     广州南大酒店有限公司    DH12071900412    2012/7/18     河源市源区宇华印刷厂    DH12071900513    2012/7/18     河源市源区宇华印刷厂    DH12071900514    2012/7/18     河源市源区宇华印刷厂    DH12071900515    2012/7/18     河源市源区宇华印刷厂    DH12071900516    2012/7/18     河源市源区宇华印刷厂    DH12071900517    2012/7/18     河源市源区宇华印刷厂    DH12071900518    2012/7/18     河源市源区宇华印刷厂    DH120719005 */


就这么多分了.

------解决方案--------------------
我怎么感觉不是 19 呢?是 18 ?

SQL code
;with cte as(    select 日期,客户,'DH'+right(convert(varchar(10)),8)+         right(1001+row_number() over (order by getdate()),3) as 流水号    from tb    group by 日期,客户)select *from tb a join cte b on a.日期 = b.日期 and a.客户 = b.客户
------解决方案--------------------
TRY

SQL code
UPDATE TB SET 流水单号=B.流水单号 FROM (select [客户名称 ],('DH'+RIGHT(CONVERT(VARCHAR(8),[日期],112),4)+RIGHT(CONVERT(VARCHAR(4),(1000+rn)),3))流水单号FROM (select ROW_NUMBER() over(partition by [客户名称 ] order by [客户名称 ])rn,[日期],[客户名称 ] from tb)AS A)B ON TB.[客户名称 ]=B.[客户名称 ]
------解决方案--------------------
SQL code
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([ID] varchar(9),[日期] datetime,[客户名称] varchar(24),[流水单号] varchar(11))insert [tb]select '1','2012/7/18','东莞港有限公司广州分公司',null union allselect '2','2012/7/18','佛山彤鞋业有限公司',null union allselect '3','2012/7/18','佛山彤鞋业有限公司',null union allselect '4','2012/7/18','佛山彤鞋业有限公司',null union allselect '5','2012/7/18','广东发克汽车用品有限公司',null union allselect '6','2012/7/18','广东发克汽车用品有限公司',null union allselect '7','2012/7/18','广东发克汽车用品有限公司',null union allselect '8','2012/7/18','广东发克汽车用品有限公司',null union allselect '9','2012/7/18','广东发克汽车用品有限公司',null union allselect '10','2012/7/18','广州南大酒店有限公司',null union allselect '11','2012/7/18','广州南大酒店有限公司',null union allselect '12','2012/7/18','河源市源区宇华印刷厂',null union allselect '13','2012/7/18','河源市源区宇华印刷厂',null union allselect '14','2012/7/18','河源市源区宇华印刷厂',null union allselect '15','2012/7/18','河源市源区宇华印刷厂',null union allselect '16','2012/7/18','河源市源区宇华印刷厂',null union allselect '17','2012/7/18','河源市源区宇华印刷厂',null union allselect '18','2012/7/18','河源市源区宇华印刷厂',nullgoUPDATE ASET A.流水单号=B.BHFROM TB AJOIN (SELECT *,  BH='DH'+stuff(CONVERT(VARCHAR(8),日期,112),1,2,'')+right('000'+ltrim(DENSE_RANK() OVER(partition by CONVERT(VARCHAR(8),日期,112) order by 客户名称)),3)  FROM TB) BON A.ID=B.IDGOSELECT  * FROM TB/**ID        日期                      客户名称                     流水单号--------- ----------------------- ------------------------ -----------1         2012-07-18 00:00:00.000 东莞港有限公司广州分公司             DH1207180012         2012-07-18 00:00:00.000 佛山彤鞋业有限公司                DH1207180023         2012-07-18 00:00:00.000 佛山彤鞋业有限公司                DH1207180024         2012-07-18 00:00:00.000 佛山彤鞋业有限公司                DH1207180025         2012-07-18 00:00:00.000 广东发克汽车用品有限公司             DH1207180036         2012-07-18 00:00:00.000 广东发克汽车用品有限公司             DH1207180037         2012-07-18 00:00:00.000 广东发克汽车用品有限公司             DH1207180038         2012-07-18 00:00:00.000 广东发克汽车用品有限公司             DH1207180039         2012-07-18 00:00:00.000 广东发克汽车用品有限公司             DH12071800310        2012-07-18 00:00:00.000 广州南大酒店有限公司               DH12071800411        2012-07-18 00:00:00.000 广州南大酒店有限公司               DH12071800412        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH12071800513        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH12071800514        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH12071800515        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH12071800516        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH12071800517        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH12071800518        2012-07-18 00:00:00.000 河源市源区宇华印刷厂               DH120718005(18 行受影响)**/
  相关解决方案