请大侠们帮忙弄下,因为从表数据不准确,想汇总后取主表的平均值,分配下去,可以一步到位吗?谢谢。
DECLARE @t TABLE
(INVNO NVARCHAR(20),Amount DECIMAL(18,2))
INSERT INTO @t
SELECT 'A',300 UNION ALL
SELECT 'B',500 DECLARE @td TABLE
(INVNO NVARCHAR(20),Item NVARCHAR(30),Amount DECIMAL(18,2))
INSERT INTO @td
SELECT 'A','001',50 UNION ALL
SELECT 'A','001',180 UNION ALL
SELECT 'A','002',50 UNION ALL
SELECT 'A','002',100 UNION ALL
SELECT 'B','001',200 UNION ALL
SELECT 'B','001',50 UNION ALL
SELECT 'B','002',100 UNION ALL
SELECT 'B','002',100 'A','001',150
'A','002',150
'B','001',250
'B','002',250

解决方案 »

  1.   


    (2 行受影响)(8 行受影响)
    invno                item                           
    -------------------- ------------------------------ -----------
    A                    001                            150
    A                    002                            150
    B                    001                            250
    B                    002                            250(4 行受影响)
      

  2.   

    DECLARE @t TABLE
    (INVNO NVARCHAR(20),Amount int)
    INSERT INTO @t
    SELECT 'A',300 UNION ALL
    SELECT 'B',500 
     
    DECLARE @td TABLE
    (INVNO NVARCHAR(20),Item NVARCHAR(30),Amount int)
    INSERT INTO @td
    SELECT 'A','001',50 UNION ALL
    SELECT 'A','001',180 UNION ALL
    SELECT 'A','002',50 UNION ALL
    SELECT 'A','002',100 UNION ALL
    SELECT 'B','001',200 UNION ALL
    SELECT 'B','001',50 UNION ALL
    SELECT 'B','002',100 UNION ALL
    SELECT 'B','002',100 select b.invno,b.item,a.amount/b.num
    from @t a ,
    (
    select invno,item,num = count(1) from @td
    group by invno,item
    ) b
    where  a.invno = b.invno
      

  3.   


    DECLARE @t TABLE
    (INVNO NVARCHAR(20),Amount DECIMAL(18,2))
    INSERT INTO @t
    SELECT 'A',300 UNION ALL
    SELECT 'B',500 DECLARE @td TABLE
    (INVNO NVARCHAR(20),Item NVARCHAR(30),Amount DECIMAL(18,2))
    INSERT INTO @td
    SELECT 'A','001',50 UNION ALL
    SELECT 'A','001',180 UNION ALL
    SELECT 'A','002',50 UNION ALL
    SELECT 'A','002',100 UNION ALL
    SELECT 'A','003',20 UNION ALL
    SELECT 'B','001',200 UNION ALL
    SELECT 'B','001',50 UNION ALL
    SELECT 'B','002',100 UNION ALL
    SELECT 'B','002',100 select b.invno,b.item,a.amount/b.num,b.num
    from @t a ,(select invno,item,num = count(1) from @td group by invno,item ) b
     where  a.invno = b.invno 有问题 
    我期望的是这样的。
     A 001 100.0000000000000 3
    A 002 100.0000000000000 3
    A 003 100.0000000000000 3
    B 001 250.0000000000000 2
    B 002 250.0000000000000 2
      

  4.   

    是不是可以运用,SQL2005新函数哦。
      

  5.   

    DECLARE @t TABLE
    (INVNO NVARCHAR(20),Amount DECIMAL(18,2))
    INSERT INTO @t
    SELECT 'A',300 UNION ALL
    SELECT 'B',500 DECLARE @td TABLE
    (INVNO NVARCHAR(20),Item NVARCHAR(30),Amount DECIMAL(18,2))
    INSERT INTO @td
    SELECT 'A','001',50 UNION ALL
    SELECT 'A','001',180 UNION ALL
    SELECT 'A','002',50 UNION ALL
    SELECT 'A','002',100 UNION ALL
    SELECT 'A','003',20 UNION ALL
    SELECT 'B','001',200 UNION ALL
    SELECT 'B','001',50 UNION ALL
    SELECT 'B','002',100 UNION ALL
    SELECT 'B','002',100 select b.invno,c.item,a.amount/b.num num_avg,b.num
    from @t a inner join (select invno,COUNT(1) num from (select distinct INVNO,Item from  @td ) d group by invno ) b
     on  a.invno = b.invno inner join (select distinct invno,item from @td) c on a.INVNO=c.INVNO
      

  6.   

    invno item num_avg num
    A 001 100.0000000000000 3
    A 002 100.0000000000000 3
    A 003 100.0000000000000 3
    B 001 250.0000000000000 2
    B 002 250.0000000000000 2