Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
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.
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


TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
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...
I lander lunari della missione Artemis I...
SteamOS 3.8 esce dalla beta: supporto pr...
HDMI 2.2 si avvicina: i primi dispositiv...
GTA 6 è sempre più vicino:...
Prima mossa climatica di Anthropic: entr...
Ho scritto un programma da zero con Kimi...
Thermal Grizzly DeltaMate CPU Block: un ...
Il supercomputer più potente al m...
VSCO lancia Studio Pro su iOS: batch edi...
GPT-NL, il modello linguistico olandese ...
Apple Watch SE 3 crolla a 199€: il prezz...
'Non c'è spazio per console econo...
AutoUncle fotografa il mercato dell'usat...
Robase, il malware che ruba interi gioch...
DeepSeek invece di OpenAI in Copilot Cow...
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: 22:40.


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