SELECT 案件.经办律师, SUM(收支录入.金额) AS 收入金额
FROM 收支录入 INNER JOIN
      案件 ON 收支录入.案件编号 = 案件.id
GROUP BY 案件.经办律师上面语句为什么在SQL 2000中好使,但在.net中就不好使,出现以下错误:
“DataBinder.Eval:“System.Data.DataRowView”不包含名称为 案件编号 的属性。”其中,表 案件 包含字段:id,经办律师,
      表 收支录入 包含字段:案件编号 收支方式 金额

解决方案 »

  1.   

    案件编号不在选择列列表中SELECT 案件.经办律师, SUM(收支录入.金额) AS 收入金额,收支录入.案件编号
    FROM 收支录入 INNER JOIN
          案件 ON 收支录入.案件编号 = 案件.id
    GROUP BY 案件.经办律师
      

  2.   

    SELECT 案件.经办律师, SUM(收支录入.金额) AS 收入金额
    FROM 收支录入,案件 
    WHERE 收支录入.案件编号 = 案件.id
    GROUP BY 案件.经办律师
    看改成这个行不行??
      

  3.   

    按2楼的做,得到错误:
     列 '收支录入.案件编号' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。3楼的和我的写法实质上是一样的,还有谁知道怎么回事啊?
      

  4.   

    SELECT 案件.经办律师, SUM(收支录入.金额) AS 收入金额,收支录入.案件编号
    FROM 收支录入 INNER JOIN
          案件 ON 收支录入.案件编号 = 案件.id
    GROUP BY 案件.经办律师改成这样就可以了,你都没有查询出"收支录入.案件编号"怎么绑定啊!
      

  5.   

    可是这样改就会出现
    列 '收支录入.案件编号' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中
    这样的错误
    而且我的表项中并不需要案件编号这个列,如果有这个列,group by 经办律师 也就没有意义了
      

  6.   

    不需要这个列你干嘛要绑定这列啊,这里不是SQL语句有问题,而是你的程序有问题!
      

  7.   

    你想得到每个律师的总的收入金额。你上面用的聚合 ,分组就能得到这个结果,
    当然里面不能有案件编号这个字段了,因为你已经在聚合。如果程序里面还需要每个律师收入的总和对应的案件编号明细可以用另外的查询语句得到,比如:
    SELECT 案件.案件编号
    FROM 收支录入 INNER JOIN
          案件 ON 收支录入.案件编号 = 案件.id
    where  案件.经办律师 = "XX律师"