dimecres, 2 de gener del 2008

Similar a 'group by' però horitzontal en SQL DB/2

Amb aquesta tècnica podreu totalitzar en columnes amb una única instrucció SQL DB/2.

L'exemple mostra un informe del número d'arxius PF i LF, i altres taules, vistes o índex de cada bilbioteca, recuperant dades de l'arxiu QADBXREF.

Tenim les columnes:
dbxLib -> Nom de la biblioteca
CountPF -> Número de PF's a la LIB
CountLF -> Número de LF's a la LIB
CountSQLs -> Número d'altres tipus d'objectes SQL
CountTOTAL -> Total Objectes a la LIB
TestSum -> un exemple de la funció SUM, el valor d'aquesta columna és per a propòsits d'aprenentatge.

Hem creat aquest exemple per a mostrar el truc amb un arxiu de sistema que tothom el te i així provar-ho ràpidament, però el propòsit general del truc és el de crear informes de columnes, com les vendes anuals en quatrimestres.

select dbxLib,
count(case when dbxAtr='PF' then dbxAtr end) as CountPF,
count(case when dbxAtr='LF' then dbxAtr end) as CountLF,
count(case when not(dbxAtr in('LF', 'PF'))
then dbxAtr end) as CountSQLs,
count(dbxAtr) as CountTOTAL,
decimal(sum(case when dbxAtr in('PF', 'TB')
then dbxNFl end), 11, 0) as TestSum
from QADBXREF
group by dbxLib


Aquest truc va ser Hall of Fame a TechTarget el febrer del 2003