求一自动编号处理以下需求,谢谢
--临时接收表
select * from TEORD
/*SDDATESDRENKHNAMEKHADDESSKHTEllKHTOPOSKUNAMESKUCQTYZQTYJQTY
2013-01-17 00:00:00.000曹宏广外白云区白云大道北2号卢珍3620791104B2NULL2
2013-01-17 00:00:00.000罗平天意广州市天河区五山路科梁想13751745111A00504NULL4
2013-01-17 00:00:00.000曹宏华思花都区汽车城东冈张美136320491N2N22NULL2
2013-01-17 00:00:00.000曹宏华思花都区汽车城东冈张美136322491N21N211NULL1
2013-01-17 00:00:00.000曹宏耐路花都区汽车城岭西利衡159158148TN21A11912NULL2
2013-01-17 00:00:00.000陈熹嘉可建设六马路33号宜安黄姐836335TN27A20511NULL1
2013-01-17 00:00:00.000吴斌达亿荔湾区浣花路109号东鹏德宝商务中李媛815078粉A0X821NULL1
2013-01-17 00:00:00.000林应茂彩茂名市迎宾二路137号大院江劲NULL废A002001NULL1
2013-01-17 00:00:00.000侯青珍告体育西路103号维多利广场A彭姐381015TN21NULL1NULL1
2013-01-17 00:00:00.000侯威东丽天河区天河北路233号中信广场写郭生875212TN21A0D22NULL2
2013-01-17 00:00:00.000侯威东丽天河区天河北路233号中信广场写郭生875212TN21CA0D21NULL1*/
--查询临时TEORD表插入订单表
insert into ORD select '生成订单号',KHNAME,KHADDESS,KHTEll,KHTOPO from TEORD group by KHNAME,KHADDESS,KHTEll,KHTOPO ORDER BY KHNAME
--查询临时TEORD表插入明细表
insert into ORDT select '生成订单号',KHNAME,SKUNAME,SKU,SUM(CQTY) from TEORD group by KHNAME,SKUNAME,SKU ORDER BY KHNAME
--相同KHNAME的生成同样的"订单号","生成订单号"规则KC+年+月+日+4位流水号(例如:KC130117001)
--最后得出如下结果
/*
订单表
生成订单号KHNAMEKHADDESSKHTEllKHTOPO
KC130117001达亿荔湾区浣花路109号东鹏德宝商务中李媛815078
KC130117002东丽天河区天河北路233号中信广场写郭生875212
KC130117003广外白云区白云大道北2号卢珍362079
KC130117004华思花都区汽车城东冈张美136320491
KC130117005嘉可建设六马路33号宜安黄姐836335
KC130117006茂彩茂名市迎宾二路137号大院江劲NULL
KC130117007耐路花都区汽车城岭西利衡159158148
KC130117008天意广州市天河区五山路科梁想137517451
KC130117009珍告体育西路103号维多利广场A彭姐381015
明细表
生成订单号KHNAMESKUNAMESKU(无列名)
KC130117001达亿粉A0X821
KC130117002东丽TN21A0D22
KC130117002东丽TN21CA0D21
KC130117003广外1104B2
KC130117004华思N2N22
KC130117004华思N21N211
KC130117005嘉可TN27A20511
KC130117006茂彩废A002001
KC130117007耐路TN21A11912
KC130117008天意11A00504
KC130117009珍告TN21NULL1
*/
DECLARE @a DATE
SET @a='2013-01-17'
SELECT 'KC'+SUBSTRING(CONVERT(varchar(20), @a, 112),3,LEN(@a))+LEFT('000'+CONVERT(VARCHAR(4),ROW_NUMBER()OVER(ORDER BY GETDATE())),4)
select 'KC'+RIGHT(CONVERT(VARCHAR(8),a.SDDATE,112),6)+RIGHT(1000+t.row,3)'生成订单号',a.KHNAME,a.KHADDESS,a.KHTEll,a.KHTOPO from TEORD AS a,t WHERE a.KHNAME=t.KHNAME group by a.SDDATE,a.KHNAME,a.KHADDESS,a.KHTEll,a.KHTOPO,t.row ORDER BY a.KHNAME
--查询临时TEORD表插入明细表
;WITH t AS (
SELECT
DENSE_RANK()OVER(ORDER BY KHNAME ASC) AS row
,KHNAME
FROM TEORD
)
--insert into ORDT
select 'KC'+RIGHT(CONVERT(VARCHAR(8),a.SDDATE,112),6)+RIGHT(1000+t.row,3)'生成订单号',a.KHNAME,a.SKUNAME,a.SKU,SUM(CQTY) AS CQTY from TEORD AS a,t WHERE a.KHNAME=t.KHNAME group by a.SDDATE,a.KHNAME,a.SKUNAME,a.SKU,t.row ORDER BY a.KHNAME
/*
生成订单号 KHNAME KHADDESS KHTEll KHTOPO
---------------- ------ ----------------- ------ -----------
KC130117001 天意 广州市天河区五山路科 梁想 137517451
KC130117002 珍告 体育西路103号维多利广场A 彭姐 381015
KC130117003 耐路 花都区汽车城岭西 利衡 159158148
KC130117004 茂彩 茂名市迎宾二路137号大院 江劲 NULL
KC130117005 嘉可 建设六马路33号宜安 黄姐 836335
KC130117006 东丽 天河区天河北路233号中信广场写 郭生 875212
KC130117007 华思 花都区汽车城东冈 张美 136320491
KC130117008 广外 白云区白云大道北2号 卢珍 362079
KC130117009 达亿 荔湾区浣花路109号东鹏德宝商务中 李媛 815078
生成订单号 KHNAME SKUNAME SKU CQTY
---------------- ------ ------- ------ -----------
KC130117001 天意 11 A0050 4
KC130117002 珍告 TN21 NULL 1
KC130117003 耐路 TN21 A1191 2
KC130117004 茂彩 废 A00200 1
KC130117005 嘉可 TN27 A2051 1
KC130117006 东丽 TN21 A0D2 4
KC130117006 东丽 TN21C A0D2 2
KC130117007 华思 N2 N2 4
KC130117007 华思 N21 N21 2
KC130117008 广外 11 04B 2
KC130117009 达亿 粉 A0X82 1
*/