如下表:
A B
A1 56
A2 41
A3 52
A4 11
A5 54
A6 64
A7 20
A8 55
A9 79
A10 56
A11 92
A12 75
A13 36
… …
如何能用SQL语句对A列的值进行循环比较,而又不重复,即A1-A2,A1-A3,A1-A4..A2-A3,A2-A4...A12-A13。。
即是开始A1-A2之后不会后面又出现A2-A1这样的重复比较,请教大虾,谢谢!!!!!!!!!!!!!!

解决方案 »

  1.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-03-27 18:24:51
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([A] NVARCHAR(10),[B] INT)
    INSERT [tb]
    SELECT 'A1',56 UNION ALL
    SELECT 'A2',41 UNION ALL
    SELECT 'A3',52 UNION ALL
    SELECT 'A4',11 UNION ALL
    SELECT 'A5',54 UNION ALL
    SELECT 'A6',64 UNION ALL
    SELECT 'A7',20 UNION ALL
    SELECT 'A8',55 UNION ALL
    SELECT 'A9',79 UNION ALL
    SELECT 'A10',56 UNION ALL
    SELECT 'A11',92 UNION ALL
    SELECT 'A12',75 UNION ALL
    SELECT 'A13',36
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    select *
    from tb a
      join tb b
     on STUFF(a.a,1,1,'')*1<STUFF(b.a,1,1,'')*1
    order by STUFF(a.a,1,1,'')*1
    /*
    A          B           A          B
    ---------- ----------- ---------- -----------
    A1         56          A2         41
    A1         56          A3         52
    A1         56          A4         11
    A1         56          A5         54
    A1         56          A6         64
    A1         56          A7         20
    A1         56          A8         55
    A1         56          A9         79
    A1         56          A10        56
    A1         56          A11        92
    A1         56          A12        75
    A1         56          A13        36
    A2         41          A3         52
    A2         41          A4         11
    A2         41          A5         54
    A2         41          A6         64
    A2         41          A7         20
    A2         41          A8         55
    A2         41          A9         79
    A2         41          A10        56
    A2         41          A11        92
    A2         41          A12        75
    A2         41          A13        36
    A3         52          A4         11
    A3         52          A5         54
    A3         52          A6         64
    A3         52          A7         20
    A3         52          A8         55
    A3         52          A9         79
    A3         52          A10        56
    A3         52          A11        92
    A3         52          A12        75
    A3         52          A13        36
    A4         11          A5         54
    A4         11          A6         64
    A4         11          A7         20
    A4         11          A8         55
    A4         11          A9         79
    A4         11          A10        56
    A4         11          A11        92
    A4         11          A12        75
    A4         11          A13        36
    A5         54          A6         64
    A5         54          A7         20
    A5         54          A8         55
    A5         54          A9         79
    A5         54          A10        56
    A5         54          A11        92
    A5         54          A12        75
    A5         54          A13        36
    A6         64          A7         20
    A6         64          A8         55
    A6         64          A9         79
    A6         64          A10        56
    A6         64          A11        92
    A6         64          A12        75
    A6         64          A13        36
    A7         20          A8         55
    A7         20          A9         79
    A7         20          A10        56
    A7         20          A11        92
    A7         20          A12        75
    A7         20          A13        36
    A8         55          A9         79
    A8         55          A10        56
    A8         55          A11        92
    A8         55          A12        75
    A8         55          A13        36
    A9         79          A10        56
    A9         79          A11        92
    A9         79          A12        75
    A9         79          A13        36
    A10        56          A11        92
    A10        56          A12        75
    A10        56          A13        36
    A11        92          A12        75
    A11        92          A13        36
    A12        75          A13        36(78 行受影响)*/这样?
      

  2.   

    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([A] NVARCHAR(10),[B] INT)
    INSERT [tb]
    SELECT 'A1',56 UNION ALL
    SELECT 'A2',41 UNION ALL
    SELECT 'A3',52 UNION ALL
    SELECT 'A4',11 UNION ALL
    SELECT 'A5',54 UNION ALL
    SELECT 'A6',64 UNION ALL
    SELECT 'A7',20 UNION ALL
    SELECT 'A8',55 UNION ALL
    SELECT 'A9',79 UNION ALL
    SELECT 'A10',56 UNION ALL
    SELECT 'A11',92 UNION ALL
    SELECT 'A12',75 UNION ALL
    SELECT 'A13',36
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    select a.A AA,a.B AB,b.A BA,b.B BB,a.B-b.B 差额
    from tb a
      join tb b
     on STUFF(a.a,1,1,'')*1<STUFF(b.a,1,1,'')*1
    order by STUFF(a.a,1,1,'')*1,STUFF(b.a,1,1,'')*1
    /*
    AA         AB          BA         BB          差额
    ---------- ----------- ---------- ----------- -----------
    A1         56          A2         41          15
    A1         56          A3         52          4
    A1         56          A4         11          45
    A1         56          A5         54          2
    A1         56          A6         64          -8
    A1         56          A7         20          36
    A1         56          A8         55          1
    A1         56          A9         79          -23
    A1         56          A10        56          0
    A1         56          A11        92          -36
    A1         56          A12        75          -19
    A1         56          A13        36          20
    A2         41          A3         52          -11
    A2         41          A4         11          30
    A2         41          A5         54          -13
    A2         41          A6         64          -23
    A2         41          A7         20          21
    A2         41          A8         55          -14
    A2         41          A9         79          -38
    A2         41          A10        56          -15
    A2         41          A11        92          -51
    A2         41          A12        75          -34
    A2         41          A13        36          5
    A3         52          A4         11          41
    A3         52          A5         54          -2
    A3         52          A6         64          -12
    A3         52          A7         20          32
    A3         52          A8         55          -3
    A3         52          A9         79          -27
    A3         52          A10        56          -4
    A3         52          A11        92          -40
    A3         52          A12        75          -23
    A3         52          A13        36          16
    A4         11          A5         54          -43
    A4         11          A6         64          -53
    A4         11          A7         20          -9
    A4         11          A8         55          -44
    A4         11          A9         79          -68
    A4         11          A10        56          -45
    A4         11          A11        92          -81
    A4         11          A12        75          -64
    A4         11          A13        36          -25
    A5         54          A6         64          -10
    A5         54          A7         20          34
    A5         54          A8         55          -1
    A5         54          A9         79          -25
    A5         54          A10        56          -2
    A5         54          A11        92          -38
    A5         54          A12        75          -21
    A5         54          A13        36          18
    A6         64          A7         20          44
    A6         64          A8         55          9
    A6         64          A9         79          -15
    A6         64          A10        56          8
    A6         64          A11        92          -28
    A6         64          A12        75          -11
    A6         64          A13        36          28
    A7         20          A8         55          -35
    A7         20          A9         79          -59
    A7         20          A10        56          -36
    A7         20          A11        92          -72
    A7         20          A12        75          -55
    A7         20          A13        36          -16
    A8         55          A9         79          -24
    A8         55          A10        56          -1
    A8         55          A11        92          -37
    A8         55          A12        75          -20
    A8         55          A13        36          19
    A9         79          A10        56          23
    A9         79          A11        92          -13
    A9         79          A12        75          4
    A9         79          A13        36          43
    A10        56          A11        92          -36
    A10        56          A12        75          -19
    A10        56          A13        36          20
    A11        92          A12        75          17
    A11        92          A13        36          56
    A12        75          A13        36          39(78 行受影响)*/
      

  3.   


    select a.a,b.a,a.b,b.b from (
    SELECT *,ROW_ID=ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM #TT
    ) a ,(SELECT *,ROW_ID=ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM #TT
    ) b
    where a.ROW_ID<b.ROW_ID
    order by a.ROW_IDa          a          b           b
    ---------- ---------- ----------- -----------
    A1         A2         56          41
    A1         A3         56          52
    A1         A4         56          11
    A1         A5         56          54
    A1         A6         56          64
    A1         A7         56          20
    A1         A8         56          55
    A1         A9         56          79
    A1         A10        56          56
    A1         A11        56          92
    A1         A12        56          75
    A1         A13        56          36
    A2         A3         41          52
    A2         A4         41          11
    A2         A5         41          54
    A2         A6         41          64
    A2         A7         41          20
    A2         A8         41          55
    A2         A9         41          79
    A2         A10        41          56
    A2         A11        41          92
    A2         A12        41          75
    A2         A13        41          36
    A3         A4         52          11
    A3         A5         52          54
    A3         A6         52          64
    A3         A7         52          20
    A3         A8         52          55
    A3         A9         52          79
    A3         A10        52          56
    A3         A11        52          92
    A3         A12        52          75
    A3         A13        52          36
    A4         A5         11          54
    A4         A6         11          64
    A4         A7         11          20
    A4         A8         11          55
    A4         A9         11          79
    A4         A10        11          56
    A4         A11        11          92
    A4         A12        11          75
    A4         A13        11          36
    A5         A6         54          64
    A5         A7         54          20
    A5         A8         54          55
    A5         A9         54          79
    A5         A10        54          56
    A5         A11        54          92
    A5         A12        54          75
    A5         A13        54          36
    A6         A7         64          20
    A6         A8         64          55
    A6         A9         64          79
    A6         A10        64          56
    A6         A11        64          92
    A6         A12        64          75
    A6         A13        64          36
    A7         A8         20          55
    A7         A9         20          79
    A7         A10        20          56
    A7         A11        20          92
    A7         A12        20          75
    A7         A13        20          36
    A8         A9         55          79
    A8         A10        55          56
    A8         A11        55          92
    A8         A12        55          75
    A8         A13        55          36
    A9         A10        79          56
    A9         A11        79          92
    A9         A12        79          75
    A9         A13        79          36
    A10        A11        56          92
    A10        A12        56          75
    A10        A13        56          36
    A11        A12        92          75
    A11        A13        92          36
    A12        A13        75          36(78 行受影响)
      

  4.   


    select a.a as aa,b.a as ba,a.b as ab,b.b as bb,a.b-b.b as 差额
    from (
    SELECT *,ROW_ID=ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM #TT
    ) a ,(SELECT *,ROW_ID=ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM #TT
    ) b
    where a.ROW_ID<b.ROW_ID
    order by a.ROW_ID
    aa         ba         ab          bb          差额
    ---------- ---------- ----------- ----------- -----------
    A1         A2         56          41          15
    A1         A3         56          52          4
    A1         A4         56          11          45
    A1         A5         56          54          2
    A1         A6         56          64          -8
    A1         A7         56          20          36
    A1         A8         56          55          1
    A1         A9         56          79          -23
    A1         A10        56          56          0
    A1         A11        56          92          -36
    A1         A12        56          75          -19
    A1         A13        56          36          20
    A2         A3         41          52          -11
    A2         A4         41          11          30
    A2         A5         41          54          -13
    A2         A6         41          64          -23
    A2         A7         41          20          21
    A2         A8         41          55          -14
    A2         A9         41          79          -38
    A2         A10        41          56          -15
    A2         A11        41          92          -51
    A2         A12        41          75          -34
    A2         A13        41          36          5
    A3         A4         52          11          41
    A3         A5         52          54          -2
    A3         A6         52          64          -12
    A3         A7         52          20          32
    A3         A8         52          55          -3
    A3         A9         52          79          -27
    A3         A10        52          56          -4
    A3         A11        52          92          -40
    A3         A12        52          75          -23
    A3         A13        52          36          16
    A4         A5         11          54          -43
    A4         A6         11          64          -53
    A4         A7         11          20          -9
    A4         A8         11          55          -44
    A4         A9         11          79          -68
    A4         A10        11          56          -45
    A4         A11        11          92          -81
    A4         A12        11          75          -64
    A4         A13        11          36          -25
    A5         A6         54          64          -10
    A5         A7         54          20          34
    A5         A8         54          55          -1
    A5         A9         54          79          -25
    A5         A10        54          56          -2
    A5         A11        54          92          -38
    A5         A12        54          75          -21
    A5         A13        54          36          18
    A6         A7         64          20          44
    A6         A8         64          55          9
    A6         A9         64          79          -15
    A6         A10        64          56          8
    A6         A11        64          92          -28
    A6         A12        64          75          -11
    A6         A13        64          36          28
    A7         A8         20          55          -35
    A7         A9         20          79          -59
    A7         A10        20          56          -36
    A7         A11        20          92          -72
    A7         A12        20          75          -55
    A7         A13        20          36          -16
    A8         A9         55          79          -24
    A8         A10        55          56          -1
    A8         A11        55          92          -37
    A8         A12        55          75          -20
    A8         A13        55          36          19
    A9         A10        79          56          23
    A9         A11        79          92          -13
    A9         A12        79          75          4
    A9         A13        79          36          43
    A10        A11        56          92          -36
    A10        A12        56          75          -19
    A10        A13        56          36          20
    A11        A12        92          75          17
    A11        A13        92          36          56
    A12        A13        75          36          39(78 行受影响)
      

  5.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2010-03-27 20:11:39
    -- Version:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([A] varchar(3),[B] int)
    insert [tb]
    select 'A1',56 union all
    select 'A2',41 union all
    select 'A3',52 union all
    select 'A4',11 union all
    select 'A5',54 union all
    select 'A6',64 union all
    select 'A7',20 union all
    select 'A8',55 union all
    select 'A9',79 union all
    select 'A10',56 union all
    select 'A11',92 union all
    select 'A12',75 union all
    select 'A13',36
    --------------开始查询--------------------------
    select
     a.a as a,b.a as b,a.b as c,b.b as d,a.b-b.b as 差额
    from
     (select *,id=row_number() over(order by getdate()) from tb) a 
    cross join
     (select *,id=row_number() over(order by getdate()) from tb) b
    where
     a.id<b.id
    order by
     a.id
    ----------------结果----------------------------
    /* 
    (13 行受影响)
    a    b    c           d           差额
    ---- ---- ----------- ----------- -----------
    A1   A2   56          41          15
    A1   A3   56          52          4
    A1   A4   56          11          45
    A1   A5   56          54          2
    A1   A6   56          64          -8
    A1   A7   56          20          36
    A1   A8   56          55          1
    A1   A9   56          79          -23
    A1   A10  56          56          0
    A1   A11  56          92          -36
    A1   A12  56          75          -19
    A1   A13  56          36          20
    A2   A3   41          52          -11
    A2   A4   41          11          30
    A2   A5   41          54          -13
    A2   A6   41          64          -23
    A2   A7   41          20          21
    A2   A8   41          55          -14
    A2   A9   41          79          -38
    A2   A10  41          56          -15
    A2   A11  41          92          -51
    A2   A12  41          75          -34
    A2   A13  41          36          5
    A3   A4   52          11          41
    A3   A5   52          54          -2
    A3   A6   52          64          -12
    A3   A7   52          20          32
    A3   A8   52          55          -3
    A3   A9   52          79          -27
    A3   A10  52          56          -4
    A3   A11  52          92          -40
    A3   A12  52          75          -23
    A3   A13  52          36          16
    A4   A5   11          54          -43
    A4   A6   11          64          -53
    A4   A7   11          20          -9
    A4   A8   11          55          -44
    A4   A9   11          79          -68
    A4   A10  11          56          -45
    A4   A11  11          92          -81
    A4   A12  11          75          -64
    A4   A13  11          36          -25
    A5   A6   54          64          -10
    A5   A7   54          20          34
    A5   A8   54          55          -1
    A5   A9   54          79          -25
    A5   A10  54          56          -2
    A5   A11  54          92          -38
    A5   A12  54          75          -21
    A5   A13  54          36          18
    A6   A7   64          20          44
    A6   A8   64          55          9
    A6   A9   64          79          -15
    A6   A10  64          56          8
    A6   A11  64          92          -28
    A6   A12  64          75          -11
    A6   A13  64          36          28
    A7   A8   20          55          -35
    A7   A9   20          79          -59
    A7   A10  20          56          -36
    A7   A11  20          92          -72
    A7   A12  20          75          -55
    A7   A13  20          36          -16
    A8   A9   55          79          -24
    A8   A10  55          56          -1
    A8   A11  55          92          -37
    A8   A12  55          75          -20
    A8   A13  55          36          19
    A9   A10  79          56          23
    A9   A11  79          92          -13
    A9   A12  79          75          4
    A9   A13  79          36          43
    A10  A11  56          92          -36
    A10  A12  56          75          -19
    A10  A13  56          36          20
    A11  A12  92          75          17
    A11  A13  92          36          56
    A12  A13  75          36          39(78 行受影响)
    */
      

  6.   


    SELECT a.A AA,a.B AB,b.A BA,b.B BB,UQ=CASE WHEN a.B<>b.B THEN '不等:相差'+CAST((a.B-b.b) AS VARCHAR(50)) ELSE '相等' END
    FROM tb a
    JOIN tb b
    ON STUFF(a.A,1,1,null)*1<STUFF(b.A,1,1,null)*1
    ORDER BY STUFF(a.A,1,1,null)*1
      

  7.   


    --通用方法,该方法适用sql2005以上版本,要想适合sql2000则可以先往临时表里面导,可以达到同样的效果
    SELECT *
    FROM
    (
    SELECT A,B,[ID]=ROW_NUMBER() OVER(ORDER BY A) FROM tb
    ) AS A
    JOIN 
    (
    SELECT A,B,[ID]=ROW_NUMBER() OVER(ORDER BY A) FROM tb
    ) AS B
    ON A.ID<B.ID
    ORDER BY A.A
      

  8.   

    --查询数据表第几行至第几行数据的SQL语句
    --如N行到M行(M>N)   
      select   top   (M-N)   *   from   tablename   where   id   not   in   (select   top   N   id   from   tablename)
    --id 为字段名
      

  9.   

    select a.A,a.B,b.A,b.B
    from 如下表 a ,如下表 b
    where a.A<b.A