Tsql 执行Update SQL查询时不会出错,但不会更新我的表

Tsql 执行Update SQL查询时不会出错,但不会更新我的表,tsql,sql-server-2012,Tsql,Sql Server 2012,下面的语句应该将LSX_DC_SaleEvents表中的my WAIR列更新为数值,但它不会。它执行时没有错误,但不更新我的表 UPDATE LSX_DC_SaleEvents SET WAIR = (SELECT WAIR = SUM(CurrentUPB*CurrentInterestRate) / SUM(CurrentUPB) FROM LSX_DC_Loans WHERE SaleEventID = 1) WHERE SaleEventI

下面的语句应该将LSX_DC_SaleEvents表中的my WAIR列更新为数值,但它不会。它执行时没有错误,但不更新我的表

UPDATE LSX_DC_SaleEvents
SET WAIR = (SELECT WAIR = SUM(CurrentUPB*CurrentInterestRate) / SUM(CurrentUPB)
            FROM LSX_DC_Loans
            WHERE SaleEventID = 1)
WHERE SaleEventID = 1
interior select的结果返回值0.050993,这是我希望输入LSX_DC_SaleEvents表上我的WAIR列的值,但它始终保持在0,即使下面的select语句返回正确的值

SELECT WAIR = SUM(CurrentUPB*CurrentInterestRate) / SUM(CurrentUPB)
FROM LSX_DC_Loans
有人能理解我做错了什么吗


WAIR列的数据类型是varchar,这对我来说很好,我不需要一个可能会干扰的浮点?

可能是由于您的数据类型,结果被舍入

试试这个

UPDATE LSX_DC_SaleEvents
  SET
      WAIR =
(
    SELECT WAIR = SUM(CAST(CurrentUPB AS DECIMAL(19, 6)) * CAST(CurrentInterestRate AS DECIMAL(19, 6))) / SUM(CAST(CurrentUPB AS DECIMAL(19, 6)))
    FROM LSX_DC_Loans
    WHERE SaleEventID = 1
)
WHERE SaleEventID = 1;

为什么不这样做呢?为什么子查询中有WAIR=呢?

您的WAIR列的数据类型是什么?@Kamran Farzami Varchar您的其他数据类型是什么sumCurrentUPB*CurrentInterestRate/sum CurrentUpb=money,CurrentInterestRate=decimal 6,5相同的结果,选择WAIR=SUMCASTCurrentUPB作为小数19,选择6*CASTCurrentInterestRate作为小数19,6/SUMCASTCurrentUPB为小数19,来自LSX_DC_Loans的6在本例中为我提供了正确的信息0.050993,但它不会更新LSX_DC_SaleEvents表上的WAIR列。您可以将WAIR的数据类型更改为十进制或浮点吗?谢谢,问题是数据类型。我把它换了,它现在确实录下来了。脸掌。
UPDATE LSX_DC_SaleEvents
SET WAIR = CHAR((SELECT (SUM(CurrentUPB*CurrentInterestRate) / SUM(CurrentUPB)) * 1.0000
            FROM LSX_DC_Loans
            WHERE SaleEventID = 1), 8)
WHERE SaleEventID = 1