나는 한 무리의 테이블이있다. 세 개의 열은 정수이고 소비, 소비 2 및 소비 3으로 분류됩니다.함수 (합계)의 결과로 선택을 주문하려면 어떻게해야합니까?
테이블의 각 행을 선택하고 싶지만 내림차순 세 소비 필드의 합계로 선택을 주문하고 싶습니다.
I는 각각의 소비 열을 개별적
order by consumption3 desc, consumption 2 desc, consumption desc
하여 주문할 수 있지만, 그 합산 값이 다음 값과 순서를 합산하는 것을 선호한다.
이 작업을 수행하는 4GL 프로그램을 작성할 수도 있지만 SQL에서이 문제를 해결하려고합니다.
내가 이렇게하면
,select *
from ws_bill
order by sum(consumption) + sum(consumption2) + sum(consumption3)
는 인포믹스의 SQL은 group by
목록에있는 모든 열을 원한다.
더 쉬운 방법이 있나요? 아니면 방금 프로그램을 작성해야합니까?
create table "ics".ws_bill
(
yr char(2),
bill_no integer,
bill_month smallint,
due_date date,
tran_date date,
prev_reading integer,
curr_reading integer,
consumption integer,
consumption2 integer,
consumption3 integer,
water_charge money(10,2),
sewer_charge money(10,2),
other_charge decimal(10,2),
curr_bal money(10,2),
estimated char(1),
prev_due_date date,
time_billed datetime year to second,
override char(1),
curr_bal_save money(10,2)
);
revoke all on "ics".ws_bill from "public";
create unique index "ics".ws_indx on "ics".ws_bill (bill_no,yr,
bill_month);
는이 게시물에 대한 허용 대답에 표시된대로 주요 커서입니다 : 인포믹스 SE/4GL의
버전은 여기
[email protected]:~/icsdev$ dbaccess -V
DB-Access Version 7.25.UC6R1
Software Serial Number ACP#J267193
[email protected]:~/icsdev$ fglpc -V
Pcode Version 732-750
Software Serial Number ACP#J267193
[email protected]:~/icsdev$
우분투 12.04에서 실행되는 테이블입니다 .
declare wb_cp cursor for
select b.yr,b.bill_no,
sum(b.consumption + b.consumption2 + b.consumption3) as adj_tot
into cons_rec.* #defined record variable
from ws_bill b
where b.yr >= start_yearG and b.yr <= end_yearG
group by b.yr, b.bill_no
order by adj_tot desc, b.yr desc, b.bill_no desc
당신은 인포믹스 - SE (표준 엔진)을 사용하고 있음을 감안할 때 오히려 인포믹스 (동적 서버) 이상을, 당신은 알고 있어야합니다 FROM 절의 하위 쿼리 및 ANSI 스타일의 JOIN 작업과 같은 최신 SQL의 예의 많은 기능을 제공합니다. 작업을 수행 할 수 있지만 여기에서 질문하는 경우 Informix-SE를 언급해야합니다. 그렇지 않으면 Informix 11.70에서는 작동하지만 Informix-SE 7.25에서는 작동하지 않을 수있는 응답을받을 수 있습니다. (실제로, 틀린 답을 얻을 수도 있지만 문제를 해결하는 데 도움이 될 것입니다.) –
맞습니다. 나는 최고 소비 계정의 정확한 수를 얻고 있지 않았다. 결국, 세 가지 소비 분야에서 내림차순으로 정렬 된 4GL 프로그램을 작성한 후 다음 회계 연도를 마칠 때까지 상위 10 개 계정이 발견 된 후 계속 foreach를 사용했습니다. – octopusgrabbus