我有一个问题,我真的不知道如何解决。使用多个变量执行T-SQL命令
我有一个查询,基本上是做一个循环,执行命令。而且我的结果会以空白形式返回,其中声明基本上会有一组空白数据。
I.E.我收到了按预期方式返回的多个结果集,并返回了一大堆没有数据的结果集。
请给我一只手,我真的完全迷失了,它把我逼疯了。
DECLARE @CustomerRegion NVARCHAR(30)
DECLARE @Groups NVARCHAR(30)
DECLARE @BRANCH NVARCHAR(7)
DECLARE @getid CURSOR
SET @BRANCH = N'Patleys'
SET @getid = CURSOR FOR
SELECT
[Main_Reporting].[dbo].[Sales].[Customer Region],
[Main_Reporting].[dbo].[Sales].[Groups]
FROM
[Main_Reporting].[dbo].[Sales]
OPEN @getid
FETCH NEXT FROM @getid INTO @CustomerRegion, @Groups
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('SELECT [Branch]
,[cust-number]
,[Customer Region]
,[Groups]
FROM [Main_Reporting].[dbo].[Sales]
WHERE -- Missed
[Customer Region] != ''1''
AND [Customer Region] = ''' + @CustomerRegion + '''
AND [Groups] = ''' + @Groups + '''
GROUP BY
[Branch], [cust-number]
, [Customer Region], [Groups]
ORDER BY
MAX([invoice-date]) DESC')
FETCH NEXT FROM @getid INTO @CustomerRegion, @Groups
END
CLOSE @getid
DEALLOCATE @getid
--Edited--
对不起,我现在干的循环,因为它会生成具有集团和客户区域的可能组合的文件输出。
因此,我将在此实例中使用10个不同的文件,每个文件都有不同于Group和Customer Region的数据。
而不是生成几个脚本每个循环将运行,然后输出到一个文件并移动到下一个。这种方式我认为会更好,如果我添加了新的东西,E.I.我们有一个新的组加入,我们将有另一个报告生成其中的独特数据。
希望这会有所帮助,对于早些时候模糊的探索感到抱歉。
首先你错过了执行中的WHERE语句 – Galma88 2015-03-13 14:17:13
总是一个好主意,首先''打印'你的动态查询,看看你将实际运行什么..用'PRINT'替换'EXEC'并确认你的SQL做你期望的事情。 – AHiggins 2015-03-13 14:21:11
你为什么要这样做循环?这可以很容易地写出来,并且作为一个适当的基于查询的集合更加理智。 – 2015-03-13 14:22:41