Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用计算表达式更新sql临时表列_Sql_Sql Server - Fatal编程技术网

使用计算表达式更新sql临时表列

使用计算表达式更新sql临时表列,sql,sql-server,Sql,Sql Server,我执行下面的SQL代码。虽然计算表达式不是零,但所有行都以零更新,因为在任何情况下,附加信息分母都会更大 UPDATE #t SET ProportionOfvehicle = (CountOfVehicle / @TotalNumberOfPrivateVehicles)*100 WHERE LegalPersonID IS NOT NULL; 我终于自己解决了这个问题。我创建了一个临时表,其计算字段的数据类型如下所示 **CREATE TABLE #t ( CountOfVehic

我执行下面的SQL代码。虽然计算表达式不是零,但所有行都以零更新,因为在任何情况下,附加信息分母都会更大

UPDATE #t
SET ProportionOfvehicle = (CountOfVehicle / @TotalNumberOfPrivateVehicles)*100
WHERE LegalPersonID IS NOT NULL;

我终于自己解决了这个问题。我创建了一个临时表,其计算字段的数据类型如下所示

**CREATE TABLE #t
(
    CountOfVehicle BIGINT,
    LegalPersonID BIGINT,
    RegionID BIGINT,
    ProportionOfvehicle FLOAT,
    ProportionOfAccident FLOAT,
    ProportionOfPersonel FLOAT
)**
然后插入其他字段(计算字段除外),代码如下

**INSERT  INTO #t
(
    CountOfVehicle,
    LegalPersonID,
    RegionID,
    ProportionOfvehicle,
    ProportionOfAccident,
    ProportionOfPersonel
)
SELECT COUNT(*) AS CountOfVehicle,
       LegalPersonID,
       RegionID,
       NULL AS ProportionOfvehicle,
       NULL AS ProportionOfAccident,
       NULL AS ProportionOfPersonel
FROM Bus.VehicleOwnerships
WHERE OwnershipTypeValue IN (1,2)
GROUP BY LegalPersonID,
         RegionID** 
最后用下面的语句更新计算字段

**UPDATE #t
SET ProportionOfvehicle = CountOfVehicle / @TotalNumberOfOrganizationVehicles
WHERE RegionID IS NOT NUL**

纯粹的猜测:这很可能就是我们所说的“整数”数学<代码>9/10=0其中as
9.0/10.0=0.9
。这是因为SQL Server(和许多其他应用程序)将在整个表达式中使用相同的数据类型(如果这些数据类型都相同的话)
0.9
不能表示为整数,因此小数部分被去掉;给出
0
。如果数据类型不同,SQLServer将使用一种称为“数据类型优先”(Google it)的方法。示例DDL和DML,以及复制该问题的
@TotalNumberOfPrivateVehicles
的值,您的预期结果将极大地帮助我们帮助您。我个人想知道,如何有人可以“拥有”(?)少于整辆车,@Xaphas.)就像有人可以拥有一匹活马的一部分一样???
1.0*CountOfVehicle
来获得数字数学<代码>1e*车辆计数以获取浮点值。如果目标类型为
数值
,则建议使用显式
转换
,因为精度和比例是隐式确定的。请共享示例数据