2012-06-05 4 views
0

일부 기존 코드로 인해 발생한 문제에 접근하는 방법에 대한 이전 도움말을 통해 문제 해결을위한 최선의 방법이 사례 문을 연결하여 구문 분석 할 수있는 값을 반환하는 것 같습니다. PHP에서.여러 CASE 문을 하나의 별칭으로 연결

것은 내가 이런 일을하려고하지만 많은 행을 반환, 결국이 오류가 :

Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).

SELECT org.org_id, 
     org.org_name_1, 
     Datename(YEAR, member.enroll_date) AS enroll_year, 
     Max(CASE 
      WHEN board.member_from IS NULL THEN 0 
      ELSE 1 
      END)       AS board_member, 
     CASE 
     WHEN (org.delete_reason = 'OUT' 
       AND org.org_delete_flag = 'Y' 
       AND org.org_status_flag = 'C') THEN 'out_of_business|' 
     ELSE '' 
     END + CASE 
       WHEN (stat.carrier = 'BS' 
         AND stat.status_id IS NOT NULL 
         AND stat.termination_date IS NULL 
         AND stat.flat_dues > 0) THEN 'insurance_member|' 
       ELSE '' 
      END + CASE 
        WHEN (stat.carrier = 'BS' 
          AND stat.status_id IS NOT NULL 
          AND stat.termination_date IS NULL 
          AND stat.flat_dues = 0 
          AND member.status_flag IN('C', 'P')) THEN 'insurance_product|' 
        ELSE '' 
        END + CASE 
          WHEN (member.enroll_date IS NOT NULL 
            AND member.status_flag NOT IN('C', 'P')) THEN 'member_since|' 
          ELSE '' 
         END + CASE 
           WHEN (org.org_relationship_parent = 'Y' 
             AND org.dues_category = 'MBR' 
             AND org.org_status_flag = 'R') THEN 'subsidiary_member|' 
           ELSE '' 
           END + CASE 
             WHEN (org.org_misc_data_9 = 'PAC') THEN 'pac|' 
             ELSE '' 
            END + CASE 
              WHEN (org.dues_category = 'PART') THEN 'partner_member|' 
              ELSE '' 
              END + CASE 
                WHEN (org.dues_category = 'FREE' 
                  AND org.org_status_flag = 'P') THEN 'associate_member|' 
                ELSE '' 
               END 
              --ELSE 'non_member' 
              --END 
              AS org_status, 
     60         AS expires_in, 
     CASE 
     WHEN stat.dues_type = 'M' THEN 
      CASE 
      WHEN (stat.termination_date IS NULL) THEN (stat.flat_dues) 
      ELSE 0 
      END 
     ELSE 
      CASE 
      WHEN (member.payments = 0) THEN member.dues_billed_annual 
      ELSE member.payments 
      END 
     END        AS dues_level, 
     CASE 
     WHEN (org.affiliate_code = 'PCCE' 
       AND org.dues_category = 'MBR' 
       AND org.org_status_flag = 'R') THEN 1 
     ELSE 0 
     END        AS pcce_membr, 
     --   '$'+CONVERT(VARCHAR,@dues) AS dues_level, 
     Ltrim(@product_level)    AS product_level, 
     Ltrim(@involve_level)    AS involvement_level 
FROM organiz AS org 
     LEFT JOIN affilbil AS member 
     ON member.status_id = org.org_id 
      AND member.dues_category = 'MBR' 
     LEFT JOIN individu AS ind 
     ON ind.org_id = org.org_id 
     LEFT JOIN commembr AS board 
     ON board.status_id = ind.ind_id 
      AND board.committee_code = '5' 
      AND board.member_to IS NULL 
     LEFT JOIN statinsmorn AS stat 
     ON stat.status_id = org.org_id 
      AND stat.carrier = 'BS' 
      AND stat.planz = 'PCI' 
WHERE org.org_id = @org_id 
GROUP BY org.org_id, 
      org.org_name_1, 
      member.enroll_date, 
      org.delete_reason, 
      org.org_status_flag, 
      org.org_delete_flag, 
      stat.status_id, 
      stat.flat_dues, 
      stat.dues_type, 
      stat.termination_date, 
      org.org_misc_data_9, 
      org_relationship_parent, 
      org.dues_category, 
      member.status_flag, 
      member.dues_billed_annual, 
      member.payments, 
      stat.carrier, 
      org.Affiliate_Code 
+2

'from' 절을 포함하여 전체 쿼리를 게시 할 수 있습니까? – Andomar

+0

@Andomar이 (가) 게시했습니다. – etm124

+0

다른보기를 호출하는보기를 우연히 호출하지 않은 것입니까? – HLGEM

답변

0

글쎄,이 창피하다.

저장 프로 시저를 변경 한 경우 실수로 같은 프로 시저가 아래쪽에 나타납니다. 그래서 재귀 적으로 동일한 프로 시저를 반복해서 호출했습니다. DOH.

관련 문제