e come fai a capire (se lo dovessi fare carta e penna) quando sono di un tipo e quando di un altro?
e come fai a capire (se lo dovessi fare carta e penna) quando sono di un tipo e quando di un altro?
Ho scritto due query, una per le ore straordinarie ed una per lo stato giornaliero del dipendente... ma se un dipendente non ha ore di straordinario non mi estrae lo stato giornaliero...
codice:strSQL = " SELECT TIPO_STRAORDINARIO, NOME_DIPENDENTE, " strSQL = strSQL & " SUM(ORE_STRAORDINARIO) AS strORESTRAORDINARIO " strSQL = strSQL & " FROM PRESENZE_PERSONALE " strSQL = strSQL & " WHERE ID_DIP = " & strCODICELOCALE & " " strSQL = strSQL & " AND ORE_STRAORDINARIO <> 0 " strSQL = strSQL & " GROUP BY TIPO_STRAORDINARIO " strSQL = strSQL & " ORDER BY ID DESC " sql_count = " SELECT " sql_count = sql_count & " (SELECT COUNT(STATO_GIORNALIERO) " sql_count = sql_count & " FROM PRESENZE_PERSONALE WHERE STATO_GIORNALIERO = 'Ferie' AND ID_DIP = " & strID_DIP & ") AS strFE, " sql_count = sql_count & " (SELECT COUNT(STATO_GIORNALIERO) " sql_count = sql_count & " FROM PRESENZE_PERSONALE WHERE STATO_GIORNALIERO = 'Ritardi' AND ID_DIP = " & strCODICELOCALE & ") AS strRI, " sql_count = sql_count & " (SELECT COUNT(STATO_GIORNALIERO) " sql_count = sql_count & " FROM PRESENZE_PERSONALE WHERE STATO_GIORNALIERO = 'Malattia' AND ID_DIP = " & strCODICELOCALE & ") AS strMA, " sql_count = sql_count & " (SELECT COUNT(STATO_GIORNALIERO) " sql_count = sql_count & " FROM PRESENZE_PERSONALE WHERE STATO_GIORNALIERO = 'Permesso' AND ID_DIP = " & strCODICELOCALE & ") AS strPE, " sql_count = sql_count & " (SELECT COUNT(STATO_GIORNALIERO) " sql_count = sql_count & " FROM PRESENZE_PERSONALE WHERE STATO_GIORNALIERO = 'Assente' AND ID_DIP = " & strCODICELOCALE & ") AS strAS " sql_count = sql_count & " FROM PRESENZE_PERSONALE " Set objRS = objconn.execute (sql_count)
"Ubi Maior, Minor Cessat"
Domandare è lecito, rispondere è cortesia...
A tutti è dovuta una risposta, comunque...
“Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero
micro, NON scrivere più query in quella forma mostruosa. ma che te l'ha insegnato?
fai UNA select semplice! con una GROUP BY STATO_GIORNALIERO
prendi ad esempio quella che ho fatto io
e poi studiati i fondamentali di sql http://msdn2.microsoft.com/en-us/library/aa140011(office.10).aspx
![]()
Bé almeno le basi le conosco... il problema è che non riesco a far funzionare le due query indipendentemente l'una dall'altra...
codice:strCODICELOCALE = request.querystring("CODICELOCALE") if strCODICELOCALE <> "" THEN strSQL = " SELECT TIPO_STRAORDINARIO, NOME_DIPENDENTE, " strSQL = strSQL & " SUM(ORE_STRAORDINARIO) AS strORESTRAORDINARIO " strSQL = strSQL & " FROM PRESENZE_PERSONALE " strSQL = strSQL & " WHERE CODICE_LOCALE = " & strCODICELOCALE & " " strSQL = strSQL & " GROUP BY TIPO_STRAORDINARIO, NOME_DIPENDENTE " strSQL = strSQL & " ORDER BY ID DESC " sql_count = " SELECT NOME_DIPENDENTE, STATO_GIORNALIERO, " sql_count = sql_count & " COUNT(STATO_GIORNALIERO) AS strSTATOGIORNALIERO " sql_count = sql_count & " FROM PRESENZE_PERSONALE " sql_count = sql_count & " WHERE CODICE_LOCALE = " & strCODICELOCALE & " " sql_count = sql_count & " GROUP BY NOME_DIPENDENTE, STATO_GIORNALIERO " sql_count = sql_count & " ORDER BY ID DESC " else strSQL = " SELECT TIPO_STRAORDINARIO, " strSQL = strSQL & " SUM(ORE_STRAORDINARIO) AS strORESTRAORDINARIO " strSQL = strSQL & " FROM PRESENZE_PERSONALE " strSQL = strSQL & " GROUP BY TIPO_STRAORDINARIO " strSQL = strSQL & " ORDER BY ID DESC " sql_count = " SELECT STATO_GIORNALIERO, " sql_count = sql_count & " COUNT(STATO_GIORNALIERO) AS strSTATOGIORNALIERO " sql_count = sql_count & " FROM PRESENZE_PERSONALE " sql_count = sql_count & " GROUP BY STATO_GIORNALIERO " sql_count = sql_count & " ORDER BY ID DESC " end if
"Ubi Maior, Minor Cessat"
Domandare è lecito, rispondere è cortesia...
A tutti è dovuta una risposta, comunque...
“Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero
Ci sono riuscito !!!!![]()
![]()
![]()
"Ubi Maior, Minor Cessat"
Domandare è lecito, rispondere è cortesia...
A tutti è dovuta una risposta, comunque...
“Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero
bravo. rendi il favore al forum, pubblica la soluzione così chi dovesse avere le tue stesse esigenze potrà trarne fonte di ispirazione.Originariamente inviato da orcim
Ci sono riuscito !!!!![]()
![]()
![]()
![]()
Ho seguito le tue indicazioni ed ho previsto due query:
- la prima esegue la somma per tipologia di ore di straordinario;
- la seconda esegue conteggia lo stato giornaliero per ciascun dipendente:
Grazie Optime !codice:strCODICELOCALE = request.querystring("CODICELOCALE") if strCODICELOCALE <> "" THEN strSQL = " SELECT * , " strSQL = strSQL & " SUM(ORE_STRAORDINARIO) AS strORESTRAORDINARIO " strSQL = strSQL & " FROM PRESENZE_PERSONALE " strSQL = strSQL & " WHERE " strSQL = strSQL & " CODICE_LOCALE = " & strCODICELOCALE & " " strSQL = strSQL & " AND TIPO_STRAORDINARIO <> 'Nessuno' " strSQL = strSQL & " AND ID_GESTIONE_RIFERIMENTO = " & ID_GEST & " " strSQL = strSQL & " AND GESTIONE_RIF = " & ID_COD & " " strSQL = strSQL & " GROUP BY TIPO_STRAORDINARIO " strSQL = strSQL & " ORDER BY ID DESC " sql_count = " SELECT *, " sql_count = sql_count & " COUNT(STATO_GIORNALIERO) AS strSTATOGIORNALIERO " sql_count = sql_count & " FROM PRESENZE_PERSONALE " sql_count = sql_count & " WHERE " sql_count = sql_count & " CODICE_LOCALE = " & strCODICELOCALE & " " sql_count = sql_count & " AND ID_GESTIONE_RIFERIMENTO = " & ID_GEST & " " sql_count = sql_count & " AND GESTIONE_RIF = " & ID_COD & " " sql_count = sql_count & " GROUP BY STATO_GIORNALIERO " sql_count = sql_count & " ORDER BY ID DESC " else strSQL = " SELECT * , " strSQL = strSQL & " SUM(ORE_STRAORDINARIO) AS strORESTRAORDINARIO " strSQL = strSQL & " FROM PRESENZE_PERSONALE " strSQL = strSQL & " WHERE " strSQL = strSQL & " TIPO_STRAORDINARIO <> 'Nessuno' " strSQL = strSQL & " AND ID_GESTIONE_RIFERIMENTO = " & ID_GEST & " " strSQL = strSQL & " AND GESTIONE_RIF = " & ID_COD & " " strSQL = strSQL & " GROUP BY TIPO_STRAORDINARIO " strSQL = strSQL & " ORDER BY ID DESC " sql_count = " SELECT *, " sql_count = sql_count & " COUNT(STATO_GIORNALIERO) AS strSTATOGIORNALIERO " sql_count = sql_count & " FROM PRESENZE_PERSONALE " sql_count = sql_count & " WHERE " sql_count = sql_count & " ID_GESTIONE_RIFERIMENTO = " & ID_GEST & " " sql_count = sql_count & " AND GESTIONE_RIF = " & ID_COD & " " sql_count = sql_count & " GROUP BY STATO_GIORNALIERO " sql_count = sql_count & " ORDER BY ID DESC " end if 'ESECUZIONE PRIMA QUERY SOMMA E TIPOLOGIA STRAORDINARIO Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open strSql, objconn ... 'ESECUZIONE SECONDA QUERY CONTEGGIO STATO GIORNALIERO Set objRs = Server.CreateObject("ADODB.Recordset") objRs.Open sql_count, objconn![]()
"Ubi Maior, Minor Cessat"
Domandare è lecito, rispondere è cortesia...
A tutti è dovuta una risposta, comunque...
“Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero