SELECT 
      [GName],
      case when charindex('abc',GName)>0 then 150 else 30  end as key1,
  case when charindex('bu',GName)>0 then 100 else 50  end as key2
  (key1 + key2) as abc
  FROM mytable 想把key1 + key2 起来到abc,看提示出错。怎么才可以加起来呢

解决方案 »

  1.   

    select gname,key1,key2,(key1+key2) abc
    from
    (
    SELECT 
          [GName], 
          case when charindex('abc',GName)>0 then 150 else 30  end as key1, 
      case when charindex('bu',GName)>0 then 100 else 50  end as key2 
      (key1 + key2) as abc 
      FROM mytable 
    )aa
      

  2.   

    select [GName],sum(key1),sum(key2),sum(key1+key2) from
    (
    SELECT 
          [GName], 
          case when charindex('abc',GName)>0 then 150 else 30  end as key1, 
      case when charindex('bu',GName)>0 then 100 else 50  end as key2 
      FROM mytable 
       group by [GName]
    )
    tt
    group by [GName]
      

  3.   

    select gname,key1,key2,(key1+key2) abc
    from
    (SELECT 
          [GName], 
          case when charindex('abc',GName)>0 then 150 else 30  end as key1, 
      case when charindex('bu',GName)>0 then 100 else 50  end as key2 
      FROM mytable 
    )aa
      

  4.   

    修改下select [GName],sum(key1),sum(key2),sum(key1+key2) from
    (
    SELECT 
          [GName], 
          max(case when charindex('abc',GName)>0 then 150 else 30  end) as key1, 
      max(case when charindex('bu',GName)>0 then 100 else 50  end) as key2 
      FROM mytable 
       group by [GName]
    )
    tt
    group by [GName]
      

  5.   

    SELECT 
    [GName], 
    sum(case when charindex('abc',GName)>0 then 150 else 30  end) as key1, 
    sum(case when charindex('bu',GName)>0 then 100 else 50  end) as key2 ,
    sum(case when charindex('bu',GName)>0 then 100 else 50  end)+sum(case when charindex('bu',GName)>0 then 100 else 50  end)
    FROM mytable 
    group by [GName]?
      

  6.   

    外加一層查詢,因為當時key1,key2 也是衍生的字段,不是真實的字段。