Gestire il case....when in una query di select

giovedì 03 aprile 2008 - 10.45

trinity Profilo | Guru

Salve ragazzi,

io ho questa tabella:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

un esempio di inserimento dati potrebbe essere questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ho creato la seguente stored per selezionare in base a dei parametri i record della tabella schedinePs.
Ecco la stored:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

se fate caso ai record ci sono a volte record che hanno lo stesso nschedina ma idcomponente diverso e soprattutto codalloggiato diverso, in pratica quando si ha il caso di avere un cliente che ha codice alloggiato 16 significa che questo cliente è ospite singolo, mentre se si ha codice alloggiato 17 o 18 significa che questo cliente è un capo famiglia o capo gruppo e pertanto dopo di esse vi sono i record dei vari componenti che sono identificati con il codice alloggiato 19 e 20.
Detto questo e mi pare che sia tutto per far capire la mia situazione, il risultato che vorrei io è che vicino al record del capo famiglia o capo gruppo uscisse un campo nel quale viene inserito il numero di componeti che sono stati registrati. ossia tipo questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ma non mi funziona ovviamente perchè ho stabilito di fare il controllo sul codicealloggiato 19 e 20, ma come posso fare?


Ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

speedx Profilo | Junior Member

Mi pare abbastanza incasinata la tua query con group by immense....
Non si potrebbero utilizzare delle sotto query per fare il calcolo del count? ...



//// Marcello C.

alx_81 Profilo | Guru

>Salve ragazzi,
Ciao!

>se fate caso ai record ci sono a volte record che hanno lo stesso
>nschedina ma idcomponente diverso e soprattutto codalloggiato
>diverso, in pratica quando si ha il caso di avere un cliente
>che ha codice alloggiato 16 significa che questo cliente è ospite
>singolo, mentre se si ha codice alloggiato 17 o 18 significa
>che questo cliente è un capo famiglia o capo gruppo e pertanto
>dopo di esse vi sono i record dei vari componenti che sono identificati
>con il codice alloggiato 19 e 20.
>Detto questo e mi pare che sia tutto per far capire la mia situazione,
>il risultato che vorrei io è che vicino al record del capo famiglia
>o capo gruppo uscisse un campo nel quale viene inserito il numero
>di componeti che sono stati registrati. ossia tipo questo:
Sarò sincero, non ho capito molto ..
Fammi capire, il CodAlloggiato è il tipo dell'ospite, giusto? Quindi un codice 17 e 18 corrispondono ad un capo gruppo o famiglia?
E come fai a dire che "dopo di essi" vengono il 19 e il 20 che non è definito nemmeno un ordinamento?
Il codice o l'id che raggruppa è il idcomponente? Nel tuo esempio con idcomponente = 1 hai codalloggiato 18 e 16. Cosa significa? Se dici che "sotto" i 17 e 18 devono esserci 19 e 20, come mai ci sono i 16? E come sono legati il 17 e il 18 con il 19 e il 20?
A mio avviso questa dovrebbe forse essere trattata come una gerarchia?
Prova a spiegarci meglio il discorso
>
>
>Ciao e grazie
di nulla!
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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