Tsql 执行Update SQL查询时不会出错,但不会更新我的表
下面的语句应该将LSX_DC_SaleEvents表中的my WAIR列更新为数值,但它不会。它执行时没有错误,但不更新我的表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
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