Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-05-2010, 10:30   #1
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
[SQL] Query impossibile?

Salve ho una tabella formata dai seguenti dati

Chiave,Codice, Stato, Motivo_annullamento, Data_creazione, Data_inzio, Data_fine e altri campi non importanti

i record sono del tipo:
Codice:
 
1, TO000000000JH , 'CL', '   ', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
2, TO000000000JH , 'AB', '   ', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
3, TO000000000JH , 'CL', 'TEC', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
4, TO000000000JH , 'CL', '   ', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
5, TO000000000JH , 'AB', '   ', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
6, TO000000000JH , 'CL', 'PER', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
7, TO000000000JH , 'CL', 'PER', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
8, TO000000000JH , 'CL', '   ', 01/01/2010 10.00, 01/01/2010 10.02, 01/01/2010 10.04
lasciando perdere il fatto che ho messo le date tutte uguali e il codice uguale vorrei una query che, dati come parametri il codice ed eventualemnte mese/giorno, mi restituisse un riga del tipo:

Codice, Count(*), Count(CL) con motivo_annullamento = ' ', Count(AB), Count(Motivo_Annullamento='TEC'), COunt(Motivo_annullamento='PER')

Dunque nel nostro caso:

TO000000000JH, 8, 3, 2, 1, 2

Che alla fine mi sta a significare che quel codice ha ricevuto 8 chiamate, 3 chiuse in modo corretto, 2 "abortite", 1 annullata con motivo TEC e 2 annullate con motivo PER. Un riepilogo insomma!

E' possibile farlo con sql server?
Grazie

Ultima modifica di MaxDembo81 : 12-05-2010 alle 10:33.
MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 12:50   #2
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
prova qualcosa tipo...

Codice:
SELECT 
    Codice,
    COUNT(*),
    (SELECT COUNT(*) FROM Tabella T2 WHERE T2.Codice = T1.Codice AND T2.Stato='AB') AS X0,
    (SELECT COUNT(*) FROM Tabella T2 WHERE T2.Codice = T1.Codice AND T2.Stato='CL' AND T2.Motivo_annullamento = '') AS X1,
    (SELECT COUNT(*) FROM Tabella T2 WHERE T2.Codice = T1.Codice AND T2.Stato='CL' AND T2.Motivo_annullamento = 'TEC') AS X2
    (SELECT COUNT(*) FROM Tabella T2 WHERE T2.Codice = T1.Codice AND T2.Stato='CL' AND T2.Motivo_annullamento = 'PER') AS X3
FROM
    Tabella T1
--WHERE
--    Codice = @Codice
GROUP BY
    Codice
eventualmente rimuovi il commentato
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 14:31   #3
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
COUNT(IF()) si può usare?

Codice:
SELECT 
    Codice, COUNT(*) count1,
    COUNT(IF(Stato='AB', 1,NULL)) count2,
    COUNT(IF(Motivo_annullamento = '', 1,NULL)) count3,
    COUNT(IF(Motivo_annullamento = 'TEC', 1,NULL)) count4,
    COUNT(IF(Motivo_annullamento = 'PER', 1,NULL)) count5 
FROM
    Tabella
ecc ecc

Ultima modifica di kk3z : 12-05-2010 alle 14:34.
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 14:34   #4
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
è TSQL valido? o.O
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 17:27   #5
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
Boh? Non ho sql server
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 18:23   #6
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
ai rigori dell'sql standard
direi di no
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 19:43   #7
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
poiche' COUNT come funzione di gruppo conta solo le righe diverse da NULL, direi che potrebbe andare

Codice:
SELECT 
    Codice, COUNT(*) count1,
    COUNT( CASE WHEN  Stato='AB' THEN 1 ELSE NULL END) count2,
    COUNT( CASE WHEN  Motivo_annullamento = '' THEN 1 ELSE NULL END) count3,
    COUNT( CASE WHEN  Motivo_annullamento = 'TEC' THEN 1 ELSE NULL END) count4,
    COUNT(CASE WHEN  Motivo_annullamento = 'PER' THEN 1 ELSE NULL END) count5 
FROM
    Tabella
ecc ecc
Ma anche SUM va bene.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2010, 23:32   #8
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
La versione di Krazalizek funziona.

Ora mi sorge un dubbio.
Se io volessi restringere le date ad un determinato mese/giorno devo inserire la clausola (MONTH(Data_creazione='05')) anche nelle varie X0, X1, X2 (vedi esempio Krazalizek)? Perchè dalla prova veloce che ho fatto non mi tornano i risultati

Domanda 2: e se io volessi fare un prova dicendo "fammi vedere tutti i mesi" come faccio? Perchè ho provato (MONTH(Data_creazione)='%') oppure a mettere in una stored procedure e passare NULL oppure con * ma non funziona.
Si può fare?
MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2010, 08:10   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Sintax error in:
Quote:
Originariamente inviato da MaxDembo81 Guarda i messaggi
La versione di Krazalizek funziona.
Unknown identifier: 'Krazalizek'
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2010, 12:31   #10
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
Kralizek
MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2010, 19:26   #11
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2010, 20:19   #12
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
a parte il lapsus mi sapete aiutare?
MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2010, 20:26   #13
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da MaxDembo81 Guarda i messaggi
a parte il lapsus mi sapete aiutare?
Prova la mia, con la WHERE che ti serve.
Ricordati il GROUP BY
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2010, 11:50   #14
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
ok ho provato anche la tua gugo ma sono punto e a capo.

fai conto che la stia modificando

Codice:
ALTER PROCEDURE [dbo].[spStatistiche](@Centro as NVARCHAR(6), @Codice as NVARCHAR(15), @Mese as nchar(2))

.
.
.
.
.
.

WHERE     (Codice= @Codice) and (Centro=@Centro)
 and (MONTH(Data_creazione)=@Mese)

poi la eseguo

Codice:
USE [DBPROVA]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[spStatistiche]
		@Centro = N'TS',
		@Codice = N'To000000000JH',
		@Mese='04'

GO
fino a qua funziona.
Ma rimane il problema che se voglio avere Mese=% ovvero tutte quelle di tutti i mesi mi da errore "Messaggio 245, livello 16, stato 1, procedura spStatistiche, riga 18
Conversion failed when converting the nvarchar value '% ' to data type int."

MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2010, 15:27   #15
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
Codice:
SELECT 
    Codice, COUNT(*) count1,
    COUNT(IF(Stato='AB', 1,NULL)) count2,
    COUNT(IF(Motivo_annullamento = '', 1,NULL)) count3,
    COUNT(IF(Motivo_annullamento = 'TEC', 1,NULL)) count4,
    COUNT(IF(Motivo_annullamento = 'PER', 1,NULL)) count5 
FROM
    Tabella
ecc ecc
è uguale a
Codice:
SELECT 
    Codice, COUNT(*) count1,
    COUNT( CASE WHEN  Stato='AB' THEN 1 ELSE NULL END) count2,
    COUNT( CASE WHEN  Motivo_annullamento = '' THEN 1 ELSE NULL END) count3,
    COUNT( CASE WHEN  Motivo_annullamento = 'TEC' THEN 1 ELSE NULL END) count4,
    COUNT(CASE WHEN  Motivo_annullamento = 'PER' THEN 1 ELSE NULL END) count5 
FROM
    Tabella
ecc ecc
non capisco perchè una non è sql standard mentre l'altra si :mah:
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2010, 15:38   #16
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
perchè IF non è supportato in quella posizione.
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2010, 15:44   #17
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
Qualcomm Snapdragon Reality Elite uffici...
Snapdragon START: arriva la piattaforma ...
Kioxia Exceria G3: il modella da 4 TB &e...
Gemini 3.5 Flash delude nei test Android...
DREAME X50 Ultra Complete a 749€ per il ...
Prezzi console handheld alle stelle: la ...
Toyota presenta il primo pickup elettric...
Prime Day anticipato, tutti gli smartpho...
Dyson V10 Konical: il primo aspirapolver...
FSR 4.1 su Radeon 6000, AMD spiega perch...
Hisense svela la gamma TV 2026: RGB Mini...
Narwal lancia gli sconti Prime Day 2026:...
SpaceX ha comprato Cursor: accordo da 60...
Commodore Callback 8020 è il tele...
roborock F25 Ultra a 585€ con Prime: vap...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:21.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v