2009-10-08 4 views
0

제 문제는이 애플리케이션은 다양한 지불 옵션을 염두에두고 배포되며 지불 옵션은 배포마다 다릅니다.어떻게하면 결과가 내 선택 진술이 될 수 있습니까?

내 질문은 내 선택 진술이 될 일련의 결과를 어떻게 만드나요?

SUM(IF(pay_type = "Cash", pay_amt,0)) AS `Cash`, SUM(IF(pay_type = "Credit Card", pay_amt,0)) AS `Credit Card` 
SUM(IF(pay_type = "Discount %", pay_amt,0)) AS `Discount %`, SUM(IF(pay_type = "Gift Card", pay_amt,0)) AS `Gift Card` 
SUM(IF(pay_type = "Coupon", pay_amt,0)) AS `Coupon` 
SUM(IF(pay_type = "Gift Certificate", pay_amt,0)) AS `Gift Certificate` 
SUM(IF(pay_type = "Discount Amt.", pay_amt,0)) AS `Discount Amt. 

다음 쿼리 내 선택 진술을하게하지만,이 작업을 수행하는 코드는 매우 복잡 : 나에게이 결과를 준다

SELECT DISTINCT(CONCAT('SUM(IF(pay_type = "',pay_type,'", pay_amt,0)) AS `',pay_type,'`')) as queryFields 
FROM transaction_payments; 

. 응용 프로그램 코드의 도움없이 단일 쿼리에서이 작업을 수행 할 수 있는지 알고 싶습니다.

답변

0

SQL을 사용하여 SQL을 빌드 하시겠습니까? ew. * shudder *

나는 당신의 접근 방식이 잘못되었다고 제안 할 것이다. 대신에 하나의 행에 모든 것을 얻는 대신 여러 행에서 그것을 얻을해야합니다

select pay_type 
    , sum(pay_amt) as pay_amt 
    from transaction_payments 
group 
    by pay_type 

당신은 수평 테이블에 그것을 넣어하려는 경우, 다음 호스트 언어로 그것을 할.

또 다른 검색어로 사용하려는 경우 더 많은 문맥을 제공해야합니다.

+0

SQL에서 select 문을 생성하는 것이 손쉽게 가능한 모든 지불 유형을 코딩하는 것보다 쉽다는 생각이 들었습니다. 내 상사는 다르게 생각했다. 나는 할 수있을 때 기계가 작동하도록하고 싶다. 빠른 응답을 보내 주셔서 감사합니다. – kristofer

+0

앞으로 며칠 동안 가능한 모든 유형을 추적하겠습니다. ( – kristofer

+0

하드 코딩하지 않아도됩니다. – longneck

관련 문제