我想把表A变成表B,就是把字段3 根据字段1求平均数 怎么写SQL语句啊
求高手帮忙
-------------------------------
表A字段1 字段2  字段3
A      A1     150
A      A2     150
A      A3     150
B      B1     120
B      B2     120
----------------------------------
表B字段1 字段2  字段3
A      A1     50
A      A2     50
A      A3     50
B      B1     60
B      B2     60
--------------------------------------------------

解决方案 »

  1.   

    SELECT 
    字段1 ,
    字段2 ,
    (SELECT AVG(字段3) FROM TB WHERE 字段1=T.字段1)字段3
     FROM TB T
      

  2.   

    /*
    *************************************
    *   T-MAC 小编                      *
    *        -->努力成长中              *
    *        -->梦想DBA                 *
    *************************************
    */
    if OBJECT_ID('表A') is not null
    drop table 表A 
    go
    create table 表A (字段1 varchar(10) ,字段2 varchar(10),字段3 int)
    insert 表A select 
    'A',      'A1',    150 union select  
    'A',      'A2',    150 union select
    'A',      'A3',    150 union select
    'B',      'B1',    120 union select
    'B',      'B2',    120 
    goselect distinct 字段1,字段3/(select COUNT(*) from 表A where a.字段1=字段1) as [AVG] from 表A a 
      

  3.   

    select 字段1 ,字段2 , 字段3 = 字段3 / (select count(1) from a where 字段1 = t.字段1) from a t
      

  4.   

    /*
    *************************************
    *   T-MAC 小编                      *
    *        -->努力成长中              *
    *        -->梦想DBA                 *
    *************************************
    */
    if OBJECT_ID('表A') is not null
    drop table 表A 
    go
    create table 表A (字段1 varchar(10) ,字段2 varchar(10),字段3 int)
    insert 表A select 
    'A',      'A1',    150 union select  
    'A',      'A2',    150 union select
    'A',      'A3',    150 union select
    'B',      'B1',    120 union select
    'B',      'B2',    120 
    goselect distinct 字段1,字段2,字段3/(select COUNT(*) from 表A where a.字段1=字段1) as [AVG] from 表A a 
    /*
    字段1        字段2        AVG
    ---------- ---------- -----------
    A          A1         50
    A          A2         50
    A          A3         50
    B          B1         60
    B          B2         60*/
      

  5.   

    create table A (字段1 varchar(10) ,字段2 varchar(10),字段3 int)
    insert A select 
    'A',      'A1',    150 union select  
    'A',      'A2',    150 union select
    'A',      'A3',    150 union select
    'B',      'B1',    120 union select
    'B',      'B2',    120 
    goselect 字段1 ,字段2 , 字段3 = 字段3 / (select count(1) from a where 字段1 = t.字段1) from a tdrop table a/*
    字段1        字段2        字段3         
    ---------- ---------- ----------- 
    A          A1         50
    A          A2         50
    A          A3         50
    B          B1         60
    B          B2         60(所影响的行数为 5 行)
    */