gpt4 book ai didi

sql-server-2008 - 如果存在于 SQL Server 2008

转载 作者:行者123 更新时间:2023-12-02 00:11:34 24 4
gpt4 key购买 nike

我有一个表格顺序,其中有 3 列

  BookCode  Quantity  Billno
--------------------------
Ed001 2 A1
Ed002 3 A1
Ed003 1 A1
py001 5 A2
ed001 1 A2
ed005 2 A2
ed003 4 A2

现在我想向用户显示我的结果

表格结果

   BookCode   A1     A2
----------------------
Ed001 2 1
Ed002 3 0
Ed003 1 4
py001 0 5
ed005 0 1

结果是我的临时表,我修改它并根据 Billno

添加列

这很好用

现在我从表 Order 中选择 BookCodeQuantity 并将其插入到结果中

我想要的是,如果已经存在一个 bookcode,那么只需更新 result 表,否则插入一个包含该 bookcode 的新行。

我该怎么做?

最佳答案

我用 Cursor 解决了它..

create table #Result(BookCode varchar(20),BookRate float)
create table #bill(bilno varchar(max) )
insert into #bill ('A1')
insert into #bill ('A2')

SET @Ordnum = CURSOR FOR
SELECT bilno FROM #bill
OPEN @Ordnum
FETCH NEXT
FROM @Ordnum INTO @billno
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('ALTER TABLE #temp ADD [' + @billno+ '] varchar(30)')
SET @getbookcode = CURSOR FOR
SELECT BookCode , BookQuantity , BookRate FROM OrderDetail where BillNo = @billno
OPEN @getbookcode
FETCH NEXT
FROM @getbookcode INTO @Tbookcode,@TbookQty,@TbookRate
WHILE @@FETCH_STATUS = 0
BEGIN
if exists(select BookCode from #Result where BookCode = @Tbookcode and BookRate = @TbookRate)
begin
EXEC('Update #Result set [' + @billno+']= '+@TbookQty+' where BookCode = '''+@Tbookcode+''' and BookRate = '+@TbookRate+'')
end
else
begin
EXEC('Insert Into #Result ([' + @bno + '],BookCode,BookRate) values ( '+@TbookQty +' , '''+@Tbookcode+''','+@TbookRate+')')
end
FETCH NEXT FROM @getbookcode INTO @Tbookcode,@TbookQty , @TbookRate
END
CLOSE @getbookcode
DEALLOCATE @getbookcode
FETCH NEXT FROM @Ordnum INTO @bno
END
CLOSE @Ordnum
DEALLOCATE @Ordnum

select * from #Result

这里的#bill 是一个临时表,其中存储了 Billnum。

关于sql-server-2008 - 如果存在于 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com