将MySQL查询转换为SQL Server时出错

时间:2014-02-24 16:51:39

标签: mysql sql sql-server

尝试将以下查询转换为SQL,查询在MySQL上运行正常。问题似乎是GROUP BY区域。即使我只使用1 GROUP BY字段,我也会得到相同的错误。在InformaticaCloud中使用查询。

错误

  

“FROM Config_21Cent WHERE resp_ind ='保险'GROUP BY   resp_Ind ;;]在JDBC连接中为空:   [JDBC:Informatica的:SQLSERVER:// CBO-APS-inrpt03:1433;数据库名= SalesForce公司]。“

    SELECT sum(Cast(Resp_Ins_Open_dol AS decimal(10,2))) as baltotal, 
           carrier_code, 
           carrier_name, 
           carrier_grouping, 
           collector_name, 
           dataset_loaded, 
           docnum, 
           envoy_payer_id, 
           loc, 
           market, 
           master_payor_grouping, 
           plan_class, 
           plan_name, 
           resp_ins, 
           resp_ind, 
           resp_payor_grouping, 
           Resp_Plan_Type, 
           rspphone, 
           state 
      FROM Config_21Cent 
     WHERE resp_ind = 'Insurance' 
  GROUP BY 
  (resp_ins + resp_payor_grouping + 
  carrier_code + state + Collector_Name);

2 个答案:

答案 0 :(得分:0)

您的整个查询无效。 group by语句包含单个表达式,即一堆字段的总和。 select语句包含数以万计的没有聚合的列。也许你打算做这样的事情:

select resp_ins,  resp_payor_grouping,  carrier_code,  state,  Collector_Name, 
       sum(Cast(Resp_Ins_Open_dol AS decimal(10,2))) as baltotal
from Config_21Cent
WHERE resp_ind = 'Insurance'
GROUP BY resp_ins,  resp_payor_grouping,  carrier_code,  state,  Collector_Name;

这将适用于两个数据库。

答案 1 :(得分:0)

SELECT语句中的列必须是'GROUP BY'语句中列的子集(不是适当的子集,但是子集)。但SELECT语句中的聚合没有这样的限制。可以有任意数量的聚合;甚至可以包括不在GROUP BY语句中的列的聚合。