Sql server 抽搐 总金额大于0的 按总说明订购 从Merchant_游标获取下一个到@XMID,@locationdba 结束 关闭光标 取消分配商户光标 下拉表#TMPMID

Sql server 抽搐 总金额大于0的 按总说明订购 从Merchant_游标获取下一个到@XMID,@locationdba 结束 关闭光标 取消分配商户光标 下拉表#TMPMID,sql-server,Sql Server,我不打算重写整个过程,但您可以使用以下方法: 1-使用SET NOCOUNT ON禁用“xxx行受影响”消息 2-保持逻辑不变,但选择“结果”表,并在过程结束时选择“结果”的内容作为唯一输出。您不能像现在这样真正使用联合,因为您有不同的字段名。如果你需要结果集之间不同的字段名,那么你将永远无法以功能性的方式将它们合并到一个最终结果中。@Closers-我认为这不应该关闭,这只是一个措辞拙劣的问题。你是否在SSMS中运行此功能并复制和粘贴结果?如果需要一个结果集,那么应该编写一个返回一个结果集的查

我不打算重写整个过程,但您可以使用以下方法:

1-使用
SET NOCOUNT ON
禁用“xxx行受影响”消息


2-保持逻辑不变,但选择“结果”表,并在过程结束时选择“结果”的内容作为唯一输出。您不能像现在这样真正使用
联合
,因为您有不同的字段名。如果你需要结果集之间不同的字段名,那么你将永远无法以功能性的方式将它们合并到一个最终结果中。

@Closers-我认为这不应该关闭,这只是一个措辞拙劣的问题。你是否在SSMS中运行此功能并复制和粘贴结果?如果需要一个结果集,那么应该编写一个返回一个结果集的查询。你不想要哪一行?发表一些评论来澄清一下,而不是投票结束,这会很好。
declare @xmid varchar(16)
declare @locationdba varchar(100)
declare @month varchar(2)
declare @year varchar(4)

set @month = '05'
set @year = '2011'

select distinct xmid,LOCATIONDBA into #tmpMIDS
from tblmerchants a 
    join tblmerchantapplications b on a.merchantid = b.merchantid 
where locationdba like 'farmers furniture%'

SELECT 'TOTAL FOR ALL STORES'
SELECT 'INTERCHANGE : ALL STORES'
select ledgercode,substring(cast(ledgercode as varchar),5,3) FeeClass, mrev.description, sum(cnt) cnt, sum(volume) volume, MIC.RATE,MIC.PERITEM, 
--case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end Assessments,
TotalDisc = sum(volume)* MIC.RATE --+  sum(volume) * case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end,
,totalPerItem = sum(cnt) * MIC.PERITEM ,
--TotalAmt = round(sum(TotalAmount),2,1)
TotalAmt = sum(TotalAmount)
from monthendrevshare mrev
    join dbo.MonthendInterchange mIC on mrev.ledgercode = (900000000 + (mic.CardType * 100000) + (ICCode * 100) + 1 ) and enddate is null
where ledgercode > 900000 and xmid in (select xmid from #tmpMIDS )
and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
group by ledgercode,mrev.description, MIC.RATE,MIC.PERITEM
having sum(volume) > 0
order by volume desc

SELECT 'CREDIT INTERCHANGE : ALL STORES'
select ledgercode, substring(cast(ledgercode as varchar),5,3) FeeClass, mrev.description, sum(cnt) cnt, sum(volume) volume, MIC.RATE,MIC.PERITEM, 
--case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end Assessments,
TotalDisc = sum(volume)* MIC.RATE --+  sum(volume) * case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end,
,totalPerItem = sum(cnt) * MIC.PERITEM,
--TotalAmt = round(sum(TotalAmount),2,1)
TotalAmt = sum(TotalAmount)

from monthendrevshare mrev
    join dbo.MonthendInterchange mIC on mrev.ledgercode = (900000000 + (mic.CardType * 100000) + (ICCode * 100) + 1 ) and enddate is null
where ledgercode > 900000 and xmid in ( select xmid from #tmpMIDS )
and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
group by ledgercode,mrev.description, MIC.RATE,MIC.PERITEM
having sum(volume) <= 0
order by volume

SELECT 'AUTHORIZATIONS : ALL STORES'
select ledgercode, mrev.description, sum(cnt) cnt, AVG(PERITEM) PERITEM, SUM(TOTALAMOUNT) TOTAL
from monthendrevshare mrev
where ledgergroup = 11 
and ledgercode not in (30,102)
and xmid in (select xmid from #tmpMIDS)
and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
group by ledgercode,mrev.description
having SUM(TOTALAMOUNT)  > 0
order by  TOTAL desc

SELECT 'FEES : ALL STORES'
select ledgercode, mrev.description, sum(volume) Volume, sum(cnt) Count, AVG(RATE) RATE, AVG(PERITEM) PERITEM, SUM(TOTALAMOUNT) TOTAL
from monthendrevshare mrev
where (ledgergroup = 12 or ledgercode in (104,105,30,102,500,501,502,503,92,94) )
and ledgercode not in (33,34,46,79,47,133,48,123) 
and xmid in (select xmid from #tmpMIDS)
and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
group by ledgercode,mrev.description
having SUM(TOTALAMOUNT)  > 0
order by  TOTAL desc


DECLARE Merchant_Cursor CURSOR FOR
    select xmid,locationdba
    from #tmpMIDS 

OPEN Merchant_Cursor
FETCH NEXT FROM Merchant_Cursor into @XMID, @locationdba


WHILE @@FETCH_STATUS = 0

BEGIN
    SELECT 'TOTAL FOR STORE : ' + @XMID +' : ' + @locationdba
    SELECT 'INTERCHANGE FOR STORE : ' + @XMID +' : ' + @locationdba
    select ledgercode,substring(cast(ledgercode as varchar),5,3) FeeClass, mrev.description, sum(cnt) cnt, sum(volume) volume, MIC.RATE,MIC.PERITEM, 
    --case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end Assessments,
    TotalDisc = sum(volume)* MIC.RATE --+  sum(volume) * case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end,
    ,totalPerItem = sum(cnt) * MIC.PERITEM ,
    --TotalAmt = round(sum(TotalAmount),2,1)
    TotalAmt = sum(TotalAmount)

    from monthendrevshare mrev
        join dbo.MonthendInterchange mIC on mrev.ledgercode = (900000000 + (mic.CardType * 100000) + (ICCode * 100) + 1 ) and enddate is null
    where ledgercode > 900000 and xmid = @xmid
    and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
    group by ledgercode,mrev.description, MIC.RATE,MIC.PERITEM
    having sum(volume) > 0
    order by volume desc

    SELECT 'CREDIT INTERCHANGE FOR STORE : ' + @XMID +' : ' + @locationdba
    select ledgercode, substring(cast(ledgercode as varchar),5,3) FeeClass, mrev.description, sum(cnt) cnt, sum(volume) volume, MIC.RATE,MIC.PERITEM, 
    --case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end Assessments,
    TotalDisc = sum(volume)* MIC.RATE, --+  sum(volume) * case when substring(cast(ledgercode as varchar),4,1) = 1 then 0.000950 else 0.000925 end,
    totalPerItem = sum(cnt) * MIC.PERITEM,
    --TotalAmt = round(sum(TotalAmount),2,1)
    TotalAmt = sum(TotalAmount)

    from monthendrevshare mrev
        join dbo.MonthendInterchange mIC on mrev.ledgercode = (900000000 + (mic.CardType * 100000) + (ICCode * 100) + 1 ) and enddate is null
    where ledgercode > 900000 and xmid = @xmid
    and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
    group by ledgercode,mrev.description, MIC.RATE,MIC.PERITEM
    having sum(volume) <= 0
    order by volume 

    SELECT 'AUTHORIZATIONS FOR STORE : ' + @XMID +' : ' + @locationdba
    select ledgercode, mrev.description, sum(cnt) cnt, AVG(PERITEM) PERITEM, SUM(TOTALAMOUNT) TOTAL
    from monthendrevshare mrev
    where ledgergroup = 11 
    and ledgercode not in (30,102)
    and xmid = @xmid
    and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
    group by ledgercode,mrev.description
    having SUM(TOTALAMOUNT)  > 0
    order by  TOTAL desc

    SELECT 'FEES FOR STORE : ' + @XMID +' : ' + @locationdba
    select ledgercode, mrev.description, sum(volume) Volume, sum(cnt) Count, AVG(RATE) RATE, AVG(PERITEM) PERITEM, SUM(TOTALAMOUNT) TOTAL
    from monthendrevshare mrev
where (ledgergroup = 12 or ledgercode in (104,105,30,102,500,501,502,503,92,94) )
    and ledgercode not in (33,34,46,79,47,133,48,123) 
    and xmid = @xmid
    and entrymonth = @month and entryyear = @year AND ROOTPORTFOLIOACCOUNTNUMBER = '1'
    group by ledgercode,mrev.description
    having SUM(TOTALAMOUNT)  > 0
    order by  TOTAL desc

    FETCH NEXT FROM Merchant_Cursor into @XMID, @locationdba
END

CLOSE Merchant_Cursor
DEALLOCATE Merchant_Cursor

drop table #tmpMIDS