sql更新后无法看到所有行

时间:2013-01-25 20:15:15

标签: sql

我正在尝试使用TransactionDetail和SalesDetail表中的字段根据公式在TransactionDetail表中设置AmountOwed的值。内部Select查询工作并返回预期值。使用的字段具有以下类型:

TotalTender - money
PriceEntered - money
TaxRate - float

----- SQL查询-----

Update [POSDatabase].[dbo].[TransactionDetail]

    Set AmountOwed =  
    (Select (TotalTender - (Select sum(PriceEntered+(PriceEntered*TaxRate*.01)) 
                            from POSDB.dbo.SalesDetail as Sales 
                            where Sales.TransactionID = Trans.ID))

    From POSDB.dbo.TransactionDetail as Trans

    Where TransactionDetail.ID = Trans.ID)

    Where ID = 4207

-----结束SQL查询-----

当我运行此查询时,它说它影响了1行,但是当我尝试查看表(从表中选择*)时,查询只是旋转。奇怪的是,如果我向下滚动,它显示的所有记录最多比此查询中标识的ID少5-6。

我想也许我的数据类型不匹配,但在完成CONVERT或CAST以将结果更改为货币类型后,会发生同样的事情。

有任何建议吗?

1 个答案:

答案 0 :(得分:1)

我很难跟踪您的查询,但如果我理解正确,我认为这样的事情可能有用。

;with s (TransactionID, total) as (
    select  TransactionID, sum(PriceEntered+(PriceEntered*TaxRate*.01))
    from   [POSDB].[dbo].[SalesDetail]
    group by TransactionID
)
update  td
set     amountOwed = td.TotalTendered-s.total 
from    [POSDatabase].[dbo].[TransactionDetail] td 
    join  s on td.id = s.TransactionID
where   td.id = 4207