Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

riempimento zeri ... alle prime ami

568 views
Skip to first unread message

hmm...

unread,
Jul 21, 2009, 12:18:14 PM7/21/09
to
salve a tutti,
ho cercato in lungo e in largo, ma - in parte anche a causa della mia
completa inesperienza - non ho trovato granchè.
Si tratta di questo: su di un server MS SQL 2000 sto producendo un
report che estrae un campo definito come "SUM(tabella.qty) AS
GrandTotal".

Al momento il report mi restituisce il valore nella forma 'originale' a
una o due cifre (ogni oggetto non supera mai il centinaio).

Ora, non posso modificare le proprietà del campo, ma devo risucire a
estrarre questo dato nella forma '000000', ovvero 6 caratteri,
riempiendo con zeri non significativi gli spazi vuoti a sinistra.

Ovviamente, il problema è che se converto in char non sommo piu',
mentre se non converto, gli zeri spariscono.

Ho cercato con STR(), CAST() e pure con CONVERT(), ma non mi riesce di
ottenere il risultato sperato

Qualche anima pia puo' illuminrmi?

--
I'm using an evaluation license of nemo since 205 days.
You should really try it!
http://www.malcom-mac.com/nemo

Giovanni

unread,
Jul 21, 2009, 12:58:16 PM7/21/09
to

"hmm..." <hm...@local.host> ha scritto nel messaggio
news:nemox1032-Tu...@nntp.aioe.org...

> salve a tutti,
> ho cercato in lungo e in largo, ma - in parte anche a causa della mia
> completa inesperienza - non ho trovato granchè.
> Si tratta di questo: su di un server MS SQL 2000 sto producendo un
> report che estrae un campo definito come "SUM(tabella.qty) AS
> GrandTotal".
>
> Al momento il report mi restituisce il valore nella forma 'originale' a
> una o due cifre (ogni oggetto non supera mai il centinaio).
>
> Ora, non posso modificare le proprietà del campo, ma devo risucire a
> estrarre questo dato nella forma '000000', ovvero 6 caratteri,
> riempiendo con zeri non significativi gli spazi vuoti a sinistra.
>
> Ovviamente, il problema è che se converto in char non sommo piu',
> mentre se non converto, gli zeri spariscono.
Convertendo in Char dopo la somma?
Tipo questo, terra terra, solo ad esempio:
SELECT Categoria, '00000' + Convert(Char,SUM(Gol)) AS Numerio
FROM Atleti
GROUP BY Categoria

Ciao
Giovanni

Lorenzo Benaglia

unread,
Jul 21, 2009, 3:38:14 PM7/21/09
to
"hmm..." <hm...@local.host> wrote:
> su di un server MS SQL 2000 sto producendo un report
Con che prodotto?
Te lo chiedo perché le formattazioni di cui parli devono essere eseguire
client side.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org

hmm...

unread,
Jul 22, 2009, 1:22:53 AM7/22/09
to
Lorenzo Benaglia <lben...@despammed.com> wrote:

> "hmm..." <hm...@local.host> wrote:
>> su di un server MS SQL 2000 sto producendo un report
> Con che prodotto?

> Te lo chiedo perché le formattazioni di cui parli devono essere
> eseguire client side.

direttamente dall'enterprise manager

hmm...

unread,
Jul 22, 2009, 1:26:45 AM7/22/09
to
Giovanni <ggav...@yahoo.it> wrote:

> Convertendo in Char dopo la somma?
> Tipo questo, terra terra, solo ad esempio:
> SELECT Categoria, '00000' + Convert(Char,SUM(Gol)) AS Numerio
> FROM Atleti
> GROUP BY Categoria

oggi ci riprovo: come ho detto, ho provato sia convert che cast, ma mi
son ritrovato dei risultati assurdi... tipo che aggiungendo gli zeri a
destra li visualizzo, mentre aggiungendoli a sinistra me li tronca..
come se la conversione in char non avvenisse proprio. grazie intanto
della conferma che la soluzione è di questo tipo: se non altro ora so
cosa sto cercando ;-)

Alessandro Andreose'

unread,
Jul 22, 2009, 4:56:11 AM7/22/09
to
hmm... laid this down on his screen :
> salve a tutti,
ciao,

> ho cercato in lungo e in largo, ma - in parte anche a causa della mia

> completa inesperienza - non ho trovato granchᅵ.


> Si tratta di questo: su di un server MS SQL 2000 sto producendo un
> report che estrae un campo definito come "SUM(tabella.qty) AS
> GrandTotal".
>
> Al momento il report mi restituisce il valore nella forma 'originale' a
> una o due cifre (ogni oggetto non supera mai il centinaio).
>

> Ora, non posso modificare le proprietᅵ del campo, ma devo risucire a

> estrarre questo dato nella forma '000000', ovvero 6 caratteri,
> riempiendo con zeri non significativi gli spazi vuoti a sinistra.
>

> Ovviamente, il problema ᅵ che se converto in char non sommo piu',

> mentre se non converto, gli zeri spariscono.
>
> Ho cercato con STR(), CAST() e pure con CONVERT(), ma non mi riesce di
> ottenere il risultato sperato
>
> Qualche anima pia puo' illuminrmi?

L'idea ᅵ quella di fare il cast a varchar dopo aver fatto la somma.
Al numero trasformato in stringa ci aggiungi a sinistra 6 zeri e poi
come ultima cosa prendi i primi sei caratteri partendo da destra.
In questo modo sei certo che la stringa abbia esattamente 6 caratteri,
con tutti gli zeri che servono a sinistra.

Ecco un esempio (io l'ho provato su sql server 2008, ma dovrebbe
funzionare anche su sql 2000):

USE tempdb;
GO

CREATE TABLE Test
(
ID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
ColA INT,
Colb INT
);

INSERT INTO Test (ColA,Colb) VALUES (1,10);
INSERT INTO Test (ColA,Colb) VALUES (2,20);
INSERT INTO Test (ColA,Colb) VALUES (3,30);
INSERT INTO Test (ColA,Colb) VALUES (4,40);
INSERT INTO Test (ColA,Colb) VALUES (5,50);
GO

SELECT * FROM Test;
GO

SELECT
RIGHT(REPLICATE('0',6) + CONVERT(VARCHAR(6),SUM(ColA)),6) AS TotA,
RIGHT(REPLICATE('0',6) + CONVERT(VARCHAR(6),SUM(ColB)),6) AS TotB
FROM Test;
GO

DROP TABLE Test;
GO


HTH,
Alex

--
Alessandro Andreose'


Lorenzo Benaglia

unread,
Jul 22, 2009, 5:20:58 AM7/22/09
to
"hmm..." <hm...@local.host> wrote
> direttamente dall'enterprise manager
E da quando in qua EM è uno strumento di reportistica?!
0 new messages