Reporting services 如何在临时表中添加空值记录?

Reporting services 如何在临时表中添加空值记录?,reporting-services,report,Reporting Services,Report,我有一个表“AgentEventStats”,其中包含代理ID及其名称。我在一个数据集中使用这个表,该数据集中提取了代理名称,以便为Stats报告使用一个参数。这是为了在我的报告中排除这些代理 但是,我必须为该参数选择一个代理,否则我的报告将无法工作。这意味着,如果我不想排除任何代理,NULL值我就不能运行该报告 所以,我想,我应该在包含AgentEventStats记录的临时表中插入一个空值 我尝试的是: SELECT DISTINCT AgentReporting, AgentFir

我有一个表“AgentEventStats”,其中包含代理ID及其名称。我在一个数据集中使用这个表,该数据集中提取了代理名称,以便为Stats报告使用一个参数。这是为了在我的报告中排除这些代理

但是,我必须为该参数选择一个代理,否则我的报告将无法工作。这意味着,如果我不想排除任何代理,NULL值我就不能运行该报告

所以,我想,我应该在包含AgentEventStats记录的临时表中插入一个空值

我尝试的是:

    SELECT DISTINCT AgentReporting, AgentFirstName + ' ' + AgentLastName [AgentName]
    INTO #AgentStats    -- First, creating the temp table.
    FROM AgentEventStats
    WHERE MidnightStartDate >= dateadd(day, -60, getdate())--'2017-01-01'
    AND MidnightStartDate <  getdate() --dateadd(day,1,'2017-03-13')
    ORDER BY AgentName

    INSERT INTO #AgentStats (AgentReporting, AgentName)  --Then, inserting the Null value in that temp table.
    VALUES ('100', 'No Agents');
这不管用。我收到一条错误消息:

数据库中已存在名为“AgentStats”的对象


有人建议我改用工会。有人能给我引路吗

如果在同一连接中多次运行代码,则会出现该错误

快速修复:将DROP TABLE AgentStats添加到脚本末尾

然后只运行该行一次以删除临时表

然后可以一遍又一遍地运行整个脚本,而不会出错。在删除之前添加一个SELECT*FROM AgentStats,以查看表中的内容,然后再删除它

另一种方法是首先检查temp表是否存在,然后在运行脚本的其余部分之前删除它。像这样:

IF OBJECT_ID('tempdb..#AgentStats') IS NOT NULL 
    DROP TABLE #AgentStats

SELECT DISTINCT...
如果你这样做,你就不再需要在最后的下降表了

希望这对你有所帮助

编辑

工会的解决方案

SELECT DISTINCT AgentReporting, AgentFirstName + ' ' + AgentLastName [AgentName]
FROM AgentEventStats
WHERE MidnightStartDate >= dateadd(day, -60, getdate())--'2017-01-01'
AND MidnightStartDate <  getdate() --dateadd(day,1,'2017-03-13')
UNION ALL -- added ALL based on comment
SELECT '100', 'No Agents'
ORDER BY 2;

如果使用不同的新连接使用Management Studio运行代码,是否会出现相同的错误?我使用的是SQL Server Management Studio 2014。我将再次询问。。。您是否在其他新连接中尝试了相同的查询?不,我没有尝试其他连接。那么,我的代码是对的?只是我用的工具错了?你的代码没问题,你遗漏了一件事。我会在一分钟后发布答案。理查兹先生,我已经试过了。它在SSMS中运行良好。我获得了“成功完成命令”>>>>>但当我将该代码添加到报表生成器中的数据集时,它不会更新字段。此外,在“参数”下,我可以选择刚刚编辑的数据集。但该窗口中的值字段和标签字段为空。无法选择字段和标签。因此,该报告不起作用。>>错误消息:>报告参数“AgentName”在数据集引用中使用字段“AgentID”,但数据集“Agents”不包含该字段。我添加了一个基于联合的解决方案,该解决方案可能适用于您。是!!!!这成功了!!!哎呀。。。非常感谢你,理查兹先生。很高兴帮助你。那应该是一个联盟。使用UNION强制某种数据删除重复项。在这种特定情况下,如果第一个查询没有DISTINCT,那么UNION是可以接受的,但同时使用它们是浪费资源的。