2014-12-04 3 views
0

많은 저장 프로 시저에서 일반적으로 사용되는 논리의 대용량 문을 대체하는 함수를 설계하려고합니다.SQL에 의해 그룹화 된 인라인 UDF

필자의 연구 결과를 토대로 필자는 인라인 테이블 값 함수로 설정했습니다.

내 질문은 : 대체 할 저장 프로 시저의 대부분은 Group By 's를 사용하지만 스칼라처럼 인라인 함수로 그룹화 할 수없는 것처럼 보입니다. 인라인 함수를 사용하여 그룹화하는 방법은 무엇입니까? 나는 내가 이러한 목표를 달성하기 위해 노력하고있어 생각 :

SELECT account 
,  (SELECT Inline FROM fnGroups (id)) AS Buckets 
,  SUM(Sales) AS Sales 
FROM FactTable 
GROUP BY 
     Account 
,  (SELECT Inline FROM fnGroups (id)) --Not Allowed 

가이 업데이트를해야 할 많은 저장 프로 시저가 나는 가능한 한 동적이 기능을하고, 사소한 피하기 위해 노력하고있어 각 저장 프로 시저에 재 - 기록

. 스칼라 버전을 사용해 보았지만 성능이 상당히 떨어졌습니다.

감사합니다.

답변

0

하면 해당로 불과 집계 및 그룹의 경우 하위 쿼리가 작동해야 그것을 던져 :

SELECT f.account 
,  a.Inline 
,  SUM(f.Sales) AS Sales 
FROM FactTable f 
OUTER APPLY fnGroups(f.id) a 
GROUP BY 
     f.Account 
     a.Inline 

더 많은 예제와 함께 :

SELECT account, 
,  Buckets 
,  SUM(Sales) AS Sales 
FROM (
    SELECT account 
    ,  Sales 
    ,  (SELECT Inline FROM fnGroups (id)) AS Buckets 
    FROM FactTable) F 
GROUP BY 
     Account 
,  Buckets 
+0

감사합니다. 업데이트가 필요한 코드가 너무 많아서 코드의 구조를 변경하지 않으려 고합니다. 가능하지 않을 수도 있고 스칼라 버전을 고수해야 할 것입니다. 인라인을 사용하면서 명백한 것을 놓치지 않았는지 확인하고 싶었습니다. –