select a,
       b,
       ta=(select case when a=a.b then sum(a)  else max(a) end from table1)
from table2

解决方案 »

  1.   

    select a,
           b,
           ta=(select case when a=a.b then sum(a)  else max(a) end from table1)
    from table2 a搞不清你的别名什么意思了,呵呵,别名和列名都一样了,反正大概就这个意思,使用case when
      

  2.   

    没有贴出全部语句 因为全部语句比较麻烦.我现在想判断 invest_number=a.rate_number 他们俩是不是 = 如果是执行运算 不是执行另一个运算完整语句 提示下边的错误呀 我怎么才能解决这个问题呢case when invest_number=a.rate_number then sum(invest_money*invest_mazc) else sum(invest_money*(1-Invest_agco))end 服务器: 消息 8118,级别 16,状态 1,行 2
    列 'invest.Invest_number' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
      

  3.   

    我加了 group by invest_number 以后 返回结果就多于一个了.from invest where invest_number=a.rate_number and invest_type=1 group by invest_number
      

  4.   

    现在最关键的问题就是 如果我不where invest_number=a.rate_number  那返回的结果就多于一个了
    但如果用了这个 那前边的case 语句 就显得无用了.
      

  5.   

    没有全部语句,那么我也没法判断了.反正在单句sql是不能用if的,分支判断要用case when
    if是用于一块语句的逻辑判断的,而且你用的语法也不对,T-SQL中if是不需要用end if结尾的返回结果就多于一个了.你使用子查询期待的只是返回一个结果,实际却返回了多个结果,很明显,加上group by invest_number 后会返回多个结果
      

  6.   

    我的网络不太好,时断时连的,QQ和msn都不能用.要么你在这里贴出来,要么明天我上班后再帮你看.QQ我很少用,用msn吧[email protected]
      

  7.   

    楼主,是用delphi用太熟了。
    在SQL SERVER中用:  IF 条件 
                       begin
                    。。
                        end
    见议楼主,看一看联机帮助.....关于  IF、Case 、group by等关键字意思和实例