我在数据库中有如下行:
DocumentNumber LineNumber
1234 1
1234 1
1453 1
1237 1
1677 1
Run Code Online (Sandbox Code Playgroud)
这些值已存储在数据库中.如果有多个文档编号,我需要做的是将linenumber列加1.因此,文档编号1234将具有1和2的亚麻布.
无论如何在更新声明中这样做?
我首先尝试使用该ROUND函数将我的数据从float转换为int .我将float数据舍入为整数,这很好.
我接下来试图将浮点数据从1列(totexunits)插入到另一列int(Units).我收到以下消息:
Msg 232, Level 16, State 3, Line 1
Arithmetic overflow error for type int, value = 5726577093.000000.
Run Code Online (Sandbox Code Playgroud)
我用过这个sql:
update wkimport2 set units = CONVERT(int, totexunits)
Run Code Online (Sandbox Code Playgroud)
我不知道最近发生了什么.我检查了数据库中的那个数字,它确实显示了任何小数位,但它的行为就像有一些小数位.任何人都知道如何从列totexunits填充单位列?我被卡住了.
可能的重复:
根据表的另一个总和对表的列进行求和
我在 sql 的子选择中对已求和列中的一列进行求和,但它给出的值与已求和列相同。TotalAmount 应该与 InvoiceTotal 相加,但它只是复制相同的值。任何人都可以看到我做错了什么或者是否有更好的方法来解决这个问题?
declare @ReportLines table
(RebateInvoiceID int,
RebateSetupID int ,
ShortItemNo float primary key(RebateInvoiceID,RebateSetupID,ShortItemNo),
TotalAmount float,
InvoiceTotal float,
TotalQuantity int )
insert @ReportLines
select
Total.RebateInvoiceID
, Total.ID
, Total.ShortItemNo
, Total.TotalAmount
, sum(Total.TotalAmount) as InvoiceTotal
, Total.TotalQuantity
from
(
select
i.RebateInvoiceID
,coalesce(rs.WholesalerRebateSetupID,r.RebateSetupID) as ID
,bl.ShortItemNo
, sum(round(r.Amount,2)) as TotalAmount
, sum(r.Quantity) TotalQuantity
from
@Invoices i
join RebateInvoices ri (nolock) on
ri.RebateInvoiceID=i.RebateInvoiceID
inner loop join Rebates r (nolock) on
r.RebateInvoiceID=i.RebateInvoiceID
join RebateSetup rs (nolock) on …Run Code Online (Sandbox Code Playgroud)