I agree: more complicated, a lot. And still less dynamic and powerfull.

------------------------------
Em sáb, 28 de dez de 2013 18:02 MSK Svein Erling Tysvær escreveu:

>Hi Bhavbhuti!
>
>Let's split this into two parts.
>
>Running
>
>EXECUTE BLOCK returns (Mystatement varchar(4096)) AS
>DECLARE VARIABLE S VARCHAR(256);
>DECLARE VARIABLE I INTEGER;
>DECLARE VARIABLE S2 VARCHAR(256);
>DECLARE VARIABLE SIIF VARCHAR(1024);
>DECLARE VARIABLE SJOIN VARCHAR(1024);
>BEGIN
>  S='';
>  S2='';
>  SIIF='';
>  SJOIN='';
>  I=1;
>  FOR SELECT 'LEFT JOIN MACCOUNTS MA'||:I||' ON MA'||:I||'.CCODE = '''||CCODE||
>                    ''' AND MA'||:I||'.IID = r.IACCOUNTID ', 
> 'SUM(IIF(MA'||:I||'.IID IS NOT NULL, r.BAMT, 0))'
>  FROM MACCOUNTS MA1 
>  WHERE MA1.CCODE > '' 
>    AND NOT EXISTS(SELECT * FROM MACCOUNTS MA2 
>                   WHERE MA1.CCODE = MA2.CCODE 
>                     AND MA1.IID > MA2.IID) INTO :S, S2 DO
>  BEGIN
>    SJOIN = SJOIN||S;
>    SIIF = SIIF||', '||S2;
>    I=I+1;
>  END
>
>  FOR WITH TMP(FIELD_NAMES) AS
>    (SELECT LIST(CCODE) FROM MACCOUNTS MA1
>    WHERE MA1.CCODE > '' 
>      AND NOT EXISTS(SELECT * FROM MACCOUNTS MA2 
>                     WHERE MA1.CCODE = MA2.CCODE 
>                       AND MA1.IID > MA2.IID))
>    SELECT 'WITH TMP(IPID,'||FIELD_NAMES||') AS (SELECT r.IPID'||:SIIF||
>           'FROM  SSALEINVOICEFOOTER r ' || :SJOIN||' GROUP BY 1) SELECT * 
> FROM TMP'
>    FROM TMP INTO :MyStatement DO
>      SUSPEND;
>END;
>
>will return a statement that, when run, will return almost the result you want 
>('almost' being that it returns 0 and not NULL for columns not existing and 
>that you may have to do some modifications if there may exist named rows in 
>MACCOUNTS that doesn't exist in SSALEINVOICEFOOTER and hence, shouldn't be a 
>column).
>
>I still think this is far more complicated than doing such conversions using 
>PivotTables in Excel or similar.
>
>HTH,
>Set
>
>------------------------------------
>
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>Visit http://www.firebirdsql.org and click the Resources item
>on the main (top) menu.  Try Knowledgebase and FAQ links !
>
>Also search the knowledgebases at http://www.ibphoenix.com 
>
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>Yahoo Groups Links
>
>
>

Reply via email to