renyuning8535 2019-12-19 00:22 采纳率: 0%
浏览 273

SQL server 将游标查询结果显示在一个表中,现在是每一条显示一个表头

SQL server 将游标查询结果显示在一个表中,现在是每一条显示一个表头,语句该如何修改呢?

图片说明

declare @addr varchar(128)
declare myCursor CURSOR FOR select distinct cCardCode from dbo.ZLKCardFlow
open myCursor

fetch next from myCursor into @addr
while(@@fetch_status=0)
begin

 select distinct  c.cCardCode,c.cName, c.cstatus,  a0 as '充值金额',b1 as '消费金额',(a.a0-b.b1) as '余额' from 

(select SUM(nMoney) a0 from dbo.ZLKCardFlow where cCardCode=@addr and cOPType='充值')a,

(select SUM(nMoney) b1 from dbo.ZLKCardFlow where cCardCode=@addr and cOPType='消费')b,
(select top 1 * from dbo.ZLKCardFlow where cCardCode=@addr order by cstatus desc )c

  fetch next from myCursor into @addr 

end
CLOSE myCursor

DEALLOCATE myCursor

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 05:26
    关注

    您可以将表头显示语句移至游标外部,则每个表头只显示一遍。修改过的代码如下所示:

    declare @addr varchar(128)

    declare myCursor CURSOR FOR select distinct cCardCode from dbo.ZLKCardFlow

    open myCursor

    select '卡号','姓名','状态','充值金额','消费金额','余额'

    fetch next from myCursor into @addr

    while(@@fetch_status=0)

    begin

    select distinct c.cCardCode,c.cName, c.cstatus, a0 as '充值金额',b1 as '消费金额',(a.a0-b.b1) as '余额' from
    (select SUM(nMoney) a0 from dbo.ZLKCardFlow where cCardCode=@addr and cOPType='充值')a,
    (select SUM(nMoney) b1 from dbo.ZLKCardFlow where cCardCode=@addr and cOPType='消费')b,
    (select top 1 * from dbo.ZLKCardFlow where cCardCode=@addr order by cstatus desc )c

    fetch next from myCursor into @addr

    end

    CLOSE myCursor

    DEALLOCATE myCursor

    评论

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。