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
Ciao
Giovanni
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
> "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
> 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 ;-)
> 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'