2011-07-06 2 views
3

Journal_T - 기본적으로 이것은 양수 및 음수 값이있는 저널 테이블입니다. 필드는 다음과 같습니다 id, date, ref, description, amount, segment, period, year.한 열의 값을 표로 두 열로 분리하는 방법

debits (양수 값 포함)과 credits (음수 값 포함)의 두 열로 나누어 표시하고 싶습니다. 내가 스키마를 이해한다면

$qry = mysql_query("SELECT id, date, ref, description, SUM(amount), 
          segment, period, year 
         FROM Journal_T 
        GROUP BY segment, year, period, id") or die(mysql_error()); 
+0

디스플레이로 표시한다는 것은 사용자에게 표시한다는 의미입니까? 나는 당신의 코드가 아니라 당신의 코드에서 이것을하는 것이 좋습니다. 쿼리를 간단하게 유지 한 다음 그에 맞게 html 형식을 지정하십시오. – haydenmuhl

+0

@OMG 조랑말 덕분에. – mmdel

답변

0

가하는 CASE 함께 할 :

SELECT id, 
    date, 
    ref, 
    description, 
    CASE WHEN SUM(amount) >= 0 THEN SUM(amount) ELSE NULL END AS positive, 
    CASE WHEN SUM(amount) < 0 THEN SUM(amount) ELSE NULL END AS negative, 
,segment,period,year FROM Journal_T GROUP BY segment,year,period,id 
+0

당신이 SUM을 원한다고 생각합니다. 표현식이 아닌 CASE 문이 ... –

+0

@Michael thanks mate. 너는 별 이니까 – mmdel

+0

@OMG 조랑말일지도 모른다. 나는 원래 쿼리가 당기는 것을 이해할 수 없다. 그러나 이것이 OP를 위해 작동한다면 ... –

1

@Michael이 점에서 권리의 문제 이런 종류의 일반적 도움으로 해결 다음은 내가 사용하고있는 쿼리입니다 사례. 그러나 그가 잘못 생각한 것 같아요. CASE는 실제로 @OMG Pony와 같은 집계 함수 안에 있어야합니다. 여기 :

SELECT 
    id, 
    date, 
    ref, 
    description, 
    SUM(CASE WHEN amount > 0 THEN Amount END) AS TotalPositive, 
    SUM(CASE WHEN amount < 0 THEN Amount END) AS TotalNegative, 
    segment, 
    period, 
    year 
FROM Journal_T 
GROUP BY segment, year, period, id 

다른 지점에, 나는 당신이 GROUP BY 목록에 포함되지 않는 한이 쿼리의 출력에 date, refdescription의 값이 더 의미가 있다고 생각하지 않는다 . MySQL에서는 집계하지 않고 SELECT 목록에 포함시킬 수 있지만 해당 열에 대해 반환되는 값은 임의적이며 검색된 다른 데이터, 특히 합계와 관련이 거의 없습니다.

+0

+1 내 것보다 낫습니다. –

관련 문제