Thursday, March 6, 2008

transpose on oracle

SELECT ENCODEDMIN,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-1', cnt, null )) lxplus240_1,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-0', cnt, null )) lxplus240_0,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-2', cnt, null )) lxplus240_2,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-3', cnt, null )) lxplus240_3,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-4', cnt, null )) lxplus240_4,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-5', cnt, null )) lxplus240_5,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-6', cnt, null )) lxplus240_6,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-7', cnt, null )) lxplus240_7,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-8', cnt, null )) lxplus240_8,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-9', cnt, null )) lxplus240_9
FROM (
SELECT CAST(MSGENCODEDTIME/60 AS INT)*60 AS ENCODEDMIN, SOURCEPUBLISHERID, COUNT(*) AS CNT FROM MSGPERFORMANCE
WHERE CAST(MSGENCODEDTIME/60 AS INT)*60 > 1204796640 --AND CAST(MSGENCODEDTIME/60 AS INT)*60





SELECT DECODEDMIN,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-1', cnt, null )) lxplus240_1,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-0', cnt, null )) lxplus240_0,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-2', cnt, null )) lxplus240_2,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-3', cnt, null )) lxplus240_3,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-4', cnt, null )) lxplus240_4,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-5', cnt, null )) lxplus240_5,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-6', cnt, null )) lxplus240_6,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-7', cnt, null )) lxplus240_7,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-8', cnt, null )) lxplus240_8,
MAX( DECODE( SOURCEPUBLISHERID, 'Plxplus240.cern.ch-9', cnt, null )) lxplus240_9
FROM (
SELECT CAST(MSGDECODEDTIME/60 AS INT)*60 AS DECODEDMIN, SOURCEPUBLISHERID, COUNT(*) AS CNT FROM MSGPERFORMANCE
WHERE CAST(MSGDECODEDTIME/60 AS INT)*60 > 1204796640 --AND CAST(MSGENCODEDTIME/60 AS INT)*60
GROUP BY CAST(MSGDECODEDTIME/60 AS INT)*60, SOURCEPUBLISHERID)
GROUP BY DECODEDMIN;