0
votes

Dans la table Temp, j'obtiens cette erreur: erreur de débordement arithmétique converti au float sur Type de données numérique

Ceci est mon script xxx pré>

lorsque j'exécute cette erreur, je reçois cette erreur p>

Erreur de débordement arithmétique Convertir le flotteur sur Type de données numérique. P> blockQuote>

J'ai essayé de changer null fort> à 0.00 strong> mais toujours idem p> xxx pre>

/ P>

Country   City      Density
Australia Melbourne 23.365
Australia Sydney    25.657
Australia Perth     12.374
Canada    Toronto   27.748
Canada    Montreal  22.559


2 commentaires

Quel est le type de données densité ?


Est-ce que votre #temp créé via un ddl distinct ou sur la volée en fonction de la section dans ? Quel est le type de données du champ dans lequel vous essayez de stocker la valeur cityavg ? Et si vous lancez explicitement votre Caysavg Calcul, quelque chose comme: Cast (Cityavg comme décimal (38,5) ?


3 Réponses :


-1
votes

Utilisez ce

UPDATE T1
SET CityAvg = (SELECT STDEV(ISNULL(Population , 0)) FROM #Temp T2 WHERE T2.Country = T1.Country)
FROM #Temp T1

SELECT * FROM #Temp


0 commentaires

1
votes

Le code suivant fonctionne bien pour moi: xxx


0 commentaires

1
votes

Cette affirmation: xxx pré>

a em> pour attribuer un type à null code>. Avec aucune autre information, SQL Server l'attribue au type code> null code>. C'est probablement votre problème. Vous pouvez le voir dans le db violon . P>

, jetez ceci au type que vous souhaitez: p> xxx pré>

ou si vous souhaitez copier le même type: p>

WITH toupdate AS (
      SELECT t.*,
             STDEV(Density) OVER (PARTITION BY city) as new_cityavg
      FROM #temp t
     )
UPDATE toupdate
    SET CityAvg = new_cityavg;


0 commentaires