日期:2014-05-18  浏览次数:20421 次

跟大家提一个自动编码的问题


IF   EXISTS(SELECT   name  
    FROM     sysobjects  
    WHERE     name   =   N 'T '  
    AND     type   =   'U ')
        DROP   TABLE   T
GO

CREATE   TABLE   T   (
C1   INT,  
C2   CHAR(8),
C3   CHAR(8)
)
GO


INSERT   INTO   T
SELECT   1, 'AA ', 'K '   UNION   ALL
SELECT   2, 'AA ', 'L '   UNION   ALL
SELECT   3, 'BB ', 'K '   UNION   ALL
SELECT   4, 'BB ', 'L '   UNION   ALL
SELECT   5, 'CC ', 'K '   UNION   ALL
SELECT   6, 'CC ', 'L '   UNION   ALL
SELECT   7, 'DD ', 'K '   UNION   ALL
SELECT   8, 'DD ', 'L '   UNION   ALL
SELECT   9, 'EE ', 'K '   UNION   ALL
SELECT   10, 'FF ', 'L '

现在要得到如下的表,CD为自动编的码:
C1       CD               C2               C3              
-----------   --------   --------  
1         101               AA               K              
2         102               AA               L              
3         201               BB               K              
4         202               BB               L              
5         301               DD               K              
6         302               DD               L              
7         401               CC               K              
8         402               CC               L              
9         501               EE               K              
10       601               FF               L              

(所影响的行数为   10   行)
这里的规律为:C2相同的统统编一个号,如 "AA "为10, "BB "为20, "CC "为40等随机流水编, "K "被定为1, "L "被定为2.如C2=AA,C3=K的,自动编号CD就是:101,请问这个CD这一列怎么算出来?