Quand je lance cette requête:Somme retourne 0 sur une colonne d'argent
SELECT [id],[amount],sum(amount) as Total
FROM transaction
where id='035'
group by id, amount
Je reçois des résultats comme
id amount Total
035 -55115.24 -55115.24
035 -2126.14 -2126.14
Cependant lorsque je tente d'obtenir un total (pour la colonne amount
), en utilisant cette requête;
select id, count(*) as howMany, sum(amount) as Total
from transaction
where id='035'
group by id
order by count(*) desc
Je reçois ces résultats.
id howMany Total
035 2 0.00
Je vous attendre à obtenir
id howMany Total
035 2 -057241.38
J'ai essayé de simplifier la requête, sans le compte, juste pour vérifier si la somme travaille
select id, sum(amount) as Total
from transaction
where id='035'
group by id
Mais encore une fois cela donne moi 0 comme mon total
id Total
035 0.00
J'ai aussi essayé ceci sur des id qui ont des valeurs positives dans leur colonne de montant mais obtiennent le même comportement.
Pour clarifier les choses, je voudrais que le total des valeurs de la colonne amount
pour chaque id
, dans la table, pas seulement chaque ligne, mais je reçois que des zéros lorsque vous utilisez la fonction SUM
dans SQL.
Une autre chose que j'ai remarquée, la colonne id
est un , pas l'ID/clé pour la table. C'est une ancienne base de données qui favorise simplement lier nvarchars sur les clés primaires, pour une raison quelconque. Je ne peux pas changer la structure de la table.
Schéma
CREATE TABLE [dbo].[transaction](
[trindex] [int] IDENTITY(1,1) NOT NULL,
[id] [varchar](15) NULL,
[date] [datetime] NULL,
[amount] [money] NULL,
[acct] [varchar](20) NULL
)
Êtes-vous en cours d'exécution cette requête dans SQL Server Management Studio ou via une application? Ma première hypothèse est qu'une application est en train de changer la valeur. –
J'utilise ceci via SSMS. L'application ne changera pas ces valeurs –
Qu'est-ce que vous obtenez d'un sql simple: SELECT [id], [montant] DE transaction où id = '035' et quel type de données est le montant? – SAS