[Date Prev][Date Next][Thread Prev][Thread Next]
[Author Index]
[Date Index]
[Thread Index]
[SQR-USERS Info]
[SQRUG Home Page]
Re: Ask for help.
The SUM statement doesn't need to be at the beginning of the select
list. The only requirement is any non-aggregate columns in your select
list must be present in your group by list...
SELECT aaa, bbb, ccc, SUM(ddd), COUNT(*)
FROM ...
GROUP BY aaa, bbb, ccc
Column placement is up to the user... it's merely a position...
-Tony DeLia
Tom Hippensteel wrote:
>
> Some databases may let you use a single input in a SQL SELECT, but I believe
> Oracle (I assume Oracle from the error message) requires all inputs
> contained in the "group by" statement, with the SUM at the top of the input
> list. You can also attach an "order by" statement after the "group by"
> statement if you need the output in a certain order.
>
> Like so:
>
> select
> SUM(B.BAL_AMT),
> B.CUST_ID,
> U.NAME1,
> B.ITEM,
> B.ITEM_LINE,
> B.CURRENCY_CD,
> B.DUE_DT,
> B.ACCOUNTING_DT,
> B.ASOF_DT,
> CC.CR_LIMIT,
> B.BAL_CURRENCY
>
> FROM
> PS_ITEM B,
> PS_CUSTOMER U,
> PS_CUST_OPTION CO,
> PS_CUST_CREDIT CC,
> PS_SET_CNTRL_REC V,
> PS_BUS_UNIT_TBL_FS L
>
> WHERE
> B.CUST_ID = U.CUST_ID AND
> B.BUSINESS_UNIT = L.BUSINESS_UNIT AND
> U.SETID = V.SETID AND
> V.SETCNTRLVALUE = B.BUSINESS_UNIT AND
> CO.EFFDT = (SELECT MAX(COA.EFFDT)
> FROM PS_CUST_OPTION COA
> WHERE CO.SETID = COA.SETID
> AND CO.CUST_ID = COA.CUST_ID
> AND COA.EFFDT <= sysdate) AND
> CO.SETID = U.SETID AND
> CO.CUST_ID = U.CUST_ID AND
> CO.DST_ID_AR = 'AR_EXT' AND
> CC.EFFDT =(SELECT MAX(EFFDT) FROM PS_CUST_CREDIT
> WHERE CC.SETID = SETID
> AND CC.CUST_ID = CUST_ID
> AND EFFDT <= sysdate) AND
> U.SETID = CC.SETID AND
> U.CUST_ID = CC.CUST_ID AND
> V.RECNAME = 'CUSTOMER'
> GROUP BY
> B.CUST_ID,
> U.NAME1,
> B.ITEM,
> B.ITEM_LINE,
> B.CURRENCY_CD,
> B.DUE_DT,
> B.ACCOUNTING_DT,
> B.ASOF_DT,
> CC.CR_LIMIT,
> B.BAL_CURRENCY
>
> > -----Original Message-----
> > From: baochaun@mail.transcontinental.ca
> > [SMTP:baochaun@mail.transcontinental.ca]
> > Sent: Thursday, November 12, 1998 4:01 PM
> > To: 'SQR-USERS@USA.NET'
> > Subject: Ask for help.
> >
> > Hi everybody
> >
> > I have problem with my select, if every body could help me, here is
> > my select, here is the error ORA-00937 NOT A SINGLE-GROUP GROUP FUNCTION.
> > In this select, I want to have a total of b.bal_amt only on cust_id. How
> > can fix it?
> >
> > Thank you for your help.
> >
> > select
> > B.CUST_ID,
> > U.NAME1,
> > SUM(B.BAL_AMT),
> > B.ITEM,
> > B.ITEM_LINE,
> > B.CURRENCY_CD,
> > B.DUE_DT,
> > B.ACCOUNTING_DT,
> > B.ASOF_DT,
> > CC.CR_LIMIT,
> > B.BAL_CURRENCY
> >
> > FROM
> > PS_ITEM B,
> > PS_CUSTOMER U,
> > PS_CUST_OPTION CO,
> > PS_CUST_CREDIT CC,
> > PS_SET_CNTRL_REC V,
> > PS_BUS_UNIT_TBL_FS L
> >
> > WHERE
> > B.CUST_ID = U.CUST_ID AND
> > B.BUSINESS_UNIT = L.BUSINESS_UNIT AND
> > U.SETID = V.SETID AND
> > V.SETCNTRLVALUE = B.BUSINESS_UNIT AND
> > CO.EFFDT = (SELECT MAX(COA.EFFDT)
> > FROM PS_CUST_OPTION COA
> > WHERE CO.SETID = COA.SETID
> > AND CO.CUST_ID = COA.CUST_ID
> > AND COA.EFFDT <= sysdate) AND
> > CO.SETID = U.SETID AND
> > CO.CUST_ID = U.CUST_ID AND
> > CO.DST_ID_AR = 'AR_EXT' AND
> > CC.EFFDT =(SELECT MAX(EFFDT) FROM PS_CUST_CREDIT
> > WHERE CC.SETID = SETID
> > AND CC.CUST_ID = CUST_ID
> > AND EFFDT <= sysdate) AND
> > U.SETID = CC.SETID AND
> > U.CUST_ID = CC.CUST_ID AND
> > V.RECNAME = 'CUSTOMER'
> > GROUP BY
> > B.CUST_ID
> >
> > Merci
> >
> > Ngo Baochau
> > baochaun@mail.transcontinental.ca
> > tel: (514) 335 - 1466/4943
> > http://www.transcontinental.ca
--
Tony DeLia
AnswerThink Consulting Group
PeopleSoft Solutions Practice - Delphi Partners
tdelia@erols.com