Query....orizzontale....

lunedì 12 aprile 2010 - 16.51

elsinore Profilo | Junior Member

Ciao a tutti, io avrei la necessità di estrapoalre dei dati da una vista in per poi rappresentarli in un certo modo.....

La vista, che si chiama EXPORT, mi produce questi dati:

CODICE-------ORE-------TIPO-------SOCIETA'

XXX123-------4.00-------esterno------SOC1
XXX123-------3.00-------interno-------NULL
XXX123-------77.00------esterno------SOC2
XXX123-------3.00-------interno-------NULL

ed io avrei bisogno di rappresentarli in questo modo

CODICE-------TOT_ORE_INTERNE-------SOC1-------SOC2-------TOT_ORE_ESTERNE'

XXX123--------6.00------------------------4------------77------------81


cioè per le ore interne...non ho problemi...il tutto si sviluppa in verticale.....ma per le esterne...che variano a seconda della società...e si sviluppano in orizzontale... come posso fare? io per ora ho fatto così..

select top 1 user_code as CDC, code_prefix AS SEDE_TECNICA,
(select sum(ORE) from export WHERE CODICE ='XXX123' and tipo = 'interno') as TOT_ORE_INTERNE,
(select sum(ORE) from export WHERE CODICE ='XXX123' and tipo = 'esterno') as TOT_ORE_ESTERNE,
FROM export WHERE CODICE ='XXX123'

ma ovviamente il risultato è questo:

CODICE-------TOT_ORE_INTERNE-------TOT_ORE_ESTERNE'

XXX123---------6.00-----------------------81

qualcuno sa darmi qualche dritta?

dinoxet Profilo | Senior Member

se lo rappresenti con un report potresti :
fare prima di tutto una query dove fai un sum delle ore per societa (considerando la società interna come una di esse),
e poi fare un report di tipo matrice che ti spara le società sulle colonne e le ore sulle righe.

è un idea...



DINOXET
__________________________________________
impossible is only a word

elsinore Profilo | Junior Member

in che senso come un report?

dinoxet Profilo | Senior Member

come lo devi rappresentare :
report : stampa, pdf, excel, csv....

se usi sql, potresti con visual studio crreare un report (matrice) che con reporting service di sql puoi esportare nel formato che più ti aggrada..



DINOXET
__________________________________________
impossible is only a word

elsinore Profilo | Junior Member

devo mettere il tutto in un excel....sono in ambiente delphi però...

cmq stavo pensando di utilizzare delel tabelle temporanee....in cui man mano aggiungo/modifico i miei campi....

tipo faccio una queryche mi tira fuori tutto..e lo metto in una tabella temp1... poi calcolo i totali degli interni...e li metto in temp2....quindi vado a prendere tutte le società presenti in temp1 ..faccio le varie somme per società....e le inserisco in temp2..... sperem!

dinoxet Profilo | Senior Member

si delle tabelle temporanee può essere un idea.
ma creane una sola con un tracciata che possa esprimere il massimo delle società che possono intervenire e poii magari crei una routine che lo riempe.

può andare!

DINOXET
__________________________________________
impossible is only a word

elsinore Profilo | Junior Member

si anche....provo e ti so dire....grazie!

elsinore Profilo | Junior Member

sto incontrando qualche difficoltà.....mmmm...

io ho creato la mia tabellona temporanea con il massimo delle società possibili (per ora 3)...

CREATE TABLE ##ExpTot
(
CDC varchar(100),
SEDE_TECNICA varchar(100),
MAN_INT varchar(100),
MAN_EST varchar(250),
SOC1 varchar(250),
SOC2 varchar(250),
SOC3 varchar(250)
)

ora faccio la prima query.....e vorre inserire il risultato dentro la tabella temporanea appena creata....ma come faccio?

la query è questa

select top 1 user_code as CDC,
code_prefix AS SEDE_TECNICA,
(select sum(real_con_length) from export_ore WHERE CODE_PREFIX like 'H/CL/DI%' and tipo_op = 'interno'
AND CONVERT(datetime, REPLACE(DATA_AVANZAMENTO, '.', ':'), 3)
between (CAST('04/12/2010 01:00:00.000' as datetime)) and (CAST('04/12/2010 23:59:00.000' as datetime))
) as Man_Int,
(select sum(real_con_length) from export_ore WHERE CODE_PREFIX like 'H/CL/DI%' and tipo_op = 'esterno'
AND CONVERT(datetime, REPLACE(DATA_AVANZAMENTO, '.', ':'), 3)
between (CAST('04/12/2010 01:00:00.000' as datetime)) and (CAST('04/12/2010 23:59:00.000' as datetime))
) as Man_Est
FROM export_ore WHERE CODE_PREFIX like 'H/CL/DI%'
AND CONVERT(datetime, REPLACE(DATA_AVANZAMENTO, '.', ':'), 3)
between (CAST('04/12/2010 01:00:00.000' as datetime)) and (CAST('04/12/2010 23:59:00.000' as datetime))

vorrei andare ad inserire nella tabella temporanea i valori per le colonne
CDC
SEDE_TECNICA
MAN_INT
MAN_EST

le società poi le inserisco dopo......
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5