這樣的表結構,只要一個表即可統計啊。Select 
事业部,
SUM(使用量) As 物料使用量
From 物料使用明细表
Group By 事业部

解决方案 »

  1.   

    select 
    事业部=a.事业部,
    物料使用量=sum(b.使用量)
    from 表A a,表B b
    where a.事业部=b.事业部 and charindex(','+b.物料号+',',','+a.物料号+',')>0
    group by a.事业部
      

  2.   

    SELECT a.事业部,SUM(b.使用量) 物料使用量
    FROM 事业部 a
    LEFT JOIN 明细表 b
    ON a.事业部=b.事业部 AND CHARINDEX(',' + b.物料号 + ',',','+a.物料号+',')>0
    GROUP BY a.事业部
    未经测试。感觉你的表设计有问题,数据有冗佘。
      

  3.   

    是啊,好像跟
    事业部物料号对应关系表
    事业部 物料号
    冰箱  001,002
    电子  003,004,005
    這個表沒啥關係:)不過非要拆逗號,就寫個splitlist函數好了Create FUNCTION SplitList
    (@separator char(1), @List varchar(8000))
    RETURNS @ReturnTable TABLE(ListItem varchar(1000) COLLATE Database_Default)
    AS 
    BEGIN
    DECLARE @Index int
    DECLARE @NewText varchar(8000) 
    IF @List = null
    RETURN
    SET @Index = CHARINDEX(@separator, @List)
    WHILE NOT(@Index = 0)
    BEGIN
    SET @NewText = RTRIM(LTRIM(LEFT(@List, @Index - 1)))
    SET @List = RIGHT(@List, LEN(@List) - @Index)
    INSERT INTO @ReturnTable(ListItem) VALUES(@NewText)
    SET @Index = CHARINDEX(@separator, @List)
         END
     
    INSERT INTO @ReturnTable(ListItem) VALUES(RTRIM(LTRIM(@List)))
             
         RETURN
    END
    ----還有看到上次哪位高手寫的,忘了,表怪偶
      把,替換成union select的,也是可以的
      

  4.   

    如果更正了明细表,那么冗佘消除了。
    写法去掉 ON后面的a.事业部=b.事业部.即
    SELECT a.事业部,SUM(b.使用量) 物料使用量
    FROM 事业部 a
    LEFT JOIN 明细表 b
    ON CHARINDEX(',' + b.物料号 + ',',','+a.物料号+',')>0
    GROUP BY a.事业部
    未经测试。
      

  5.   

    --测试环境
    declare @t1 table(事业部 varchar(10),物料号 varchar(20))
    insert into @t1 select '冰箱','001,002'
    union all select '电子','003,004,005'declare @t2 table(物料号 varchar(10),使用量 int)
    insert into @t2 select '001',1
    union all select '002',3
    union all select '003',5--查询
    select 
    事业部=a.事业部,
    物料使用量=sum(b.使用量)
    from @t1 a,@t2 b
    where  charindex(','+b.物料号+',',','+a.物料号+',')>0
    group by a.事业部--结果
    /*
    事业部        物料使用量
    ---------- -----------
    冰箱         4
    电子         5(2 行受影响)*/
      

  6.   

    --测试环境
    Declare @事业部物料号对应关系表 Table(事业部 Nvarchar(10),物料号 Varchar(20))
    Insert into @事业部物料号对应关系表 Select N'冰箱','001,002'
    Union All Select N'电子','003,004,005'Declare @物料使用明细表 Table(物料号 Varchar(10),使用量 Int)
    Insert into @物料使用明细表 Select '001',1
    Union All Select '002',3
    Union All Select '003',5
    Select 
    事业部,
    SUM(使用量) As 物料使用量
    From @事业部物料号对应关系表 A
    Inner Join @物料使用明细表 B
    On ','+A.物料号+',' Like '%,'+B.物料号+',%'
    Group By 事业部--Result
    /*
    事业部 物料使用量
    冰箱 4
    电子 5
    */
      

  7.   

    select 事业部,sum(使用量) from 事业部物料号对应关系表,料使用明细表 where 事业部物料号对应关系表.物料号 like '%'+料使用明细表.物料号+'%'group by 事业部