2014-02-24 7 views
0

아래 쿼리를 SQL로 변환하려고하면 MySQL에서 쿼리가 제대로 작동합니다. 문제가 GROUP BY 영역 인 것 같습니다. 심지어 1 GROUP BY 필드를 사용할 때도 동일한 오류가 발생합니다. InformaticaCloud에서 쿼리 사용MySQL 쿼리를 SQL Server로 변환 할 때 오류가 발생했습니다.

ERROR

" resp_Ind;] BY 연 Config_21Cent FROM WHERE resp_ind = '보험'그룹은 JDBC 연결에 비어 : [JDBC : 인포매티카 : SQLSERVER : // CBO-aps- inrpt03 : 1433; DatabaseName = 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); 

답변

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; 

이것은 두 데이터베이스에서 모두 작동합니다.

+0

이것은 작동하지만 여전히 SELECT 문에서 다른 필드가 필요합니다. 쿼리는 실제로 MySQL에서 잘 작동하지만, 더 좋을 수도 있습니다. 그러나 SELECT가 GROUP BY의 서브 세트 여야한다는 것을 다른 게시물에서 이해할 때 어떻게 그 다음에 다른 필드를 SELECT로 가져올 수 있습니까? – user2451

+0

@ user2451 . . 어떤 가치를 원하십니까? 이 결과 집합에 단일 행을 형성하기 위해 결합 된 집계 된 쿼리에는 여러 행이 있습니다. 어떤 행이 다른 열의 값을 제공해야합니까? 값이 모두 같으면'group by' 절 (및'select' 절)에 추가하십시오. –

0

문은 SELECT의 문은 'GROUP BY'문에서 하위 집합 (적절한 하위 집합은 아니지만 하위 집합)이어야합니다. 그래도 SELECT 성명에는 집계에 대한 제한이 없습니다. 임의의 수의 집계가있을 수 있습니다. 심지어 GROUP BY 문에 포함되지 않은 열에도 집계 할 수 있습니다.

관련 문제