Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services SSRS中的空白值,但SQL查询中的数据_Reporting Services_Sql Server 2012_Ssrs 2008_Ssrs 2012_Ssrs Tablix - Fatal编程技术网

Reporting services SSRS中的空白值,但SQL查询中的数据

Reporting services SSRS中的空白值,但SQL查询中的数据,reporting-services,sql-server-2012,ssrs-2008,ssrs-2012,ssrs-tablix,Reporting Services,Sql Server 2012,Ssrs 2008,Ssrs 2012,Ssrs Tablix,我正在SSRS的一个解决方案中工作,它让我发疯,在向您展示我的问题之前,我会解释一下: 使用参数@startDate=yeterday 6am和@EndDate=today 6am,从带有电流、电压、压力等标签模拟输入数据的表格中选择25个数据值。现在,我们有一个表,其中包含来自不同tagID的从早上6点到早上6点的25个值 我的问题从一个tagId为16开始,它在SSRS表示中显示值0.0000,在Sql输出中显示-0.00548。。。 对于实际用途,我将只使用2个标记MSF_PDI_003、

我正在SSRS的一个解决方案中工作,它让我发疯,在向您展示我的问题之前,我会解释一下:

使用参数@startDate=yeterday 6am和@EndDate=today 6am,从带有电流、电压、压力等标签模拟输入数据的表格中选择25个数据值。现在,我们有一个表,其中包含来自不同tagID的从早上6点到早上6点的25个值

我的问题从一个tagId为16开始,它在SSRS表示中显示值0.0000,在Sql输出中显示-0.00548。。。 对于实际用途,我将只使用2个标记MSF_PDI_003、MSF_PDI_004

下面是SQL查询:

declare @startDate  datetime2 = '2017-04-19 11:00',
        @endDate    datetime2 = '2017-04-20 11:00';

SELECT InstaTime,
    MSF_PDI_003,
    MSF_PDI_004
FROM (
    SELECT 
        DATEADD(HH,-5,H.time) AS InstaTime,
        SUM(
            CASE
                WHEN t.tagName = 'analog.MSF_PDI_003.curval'
                    Then H.value
                ELSE 0
            END) as MSF_PDI_003,
        SUM(
            CASE
                WHEN t.tagName = 'analog.MSF_PDI_004.curval'
                    Then H.value
                ELSE 0
            END) as MSF_PDI_004
    FROM hour H
    INNER JOIN tag T 
        ON T.tagId = H.tagId 
    WHERE T.tagName IN 
        ('analog.MSF_PDI_003.curval', 'analog.MSF_PDI_004.curval')
        AND H.time >= @startDate
        And H.time <= @endDate

  GROUP BY time
    ) QueryData

order by InstaTime desc
以下是SSRS中表格的结果:

这附近有什么问题? *是唯一一个有负值的,可以强制一轮吗?关于我应该使用的另一种格式

快把我逼疯了,找不到问题所在。我试图改变格式,但还是一样的,你们能帮我吗?因为这东西不让我晚上睡觉,我开始做恶梦了,哈哈


我使用的是SQL Server 2012和MS Visual Studio Shell 2010报表。

首先,让我们将查询合并到一个语句中,而不是联合和单独的SELECT SUM。。。你现在有:

declare @startDate  datetime2 = '2017-04-18 11:00',
        @endDate    datetime2 = '2017-04-19 11:00';

SELECT InstaTime,
    MSF_PDI_003,
    MSF_PDI_004
FROM (
    SELECT 
        DATEADD(HH,-5,H.time) AS InstaTime,
        SUM(
            CASE
                WHEN t.tagName = 'analog.MSF_PDI_003.curval'
                    Then H.value
                ELSE 0
            END) as MSF_PDI_003,
        SUM(
            CASE
                WHEN t.tagName = 'analog.MSF_PDI_004.curval'
                    Then H.value
                ELSE 0
            END) as MSF_PDI_004
    FROM hour H
    INNER JOIN tag T 
        ON T.tagId = H.tagId 
    WHERE T.tagName IN 
        ('analog.MSF_PDI_003.curval', 'analog.MSF_PDI_004.curval')
        AND H.time >= @startDate
        And H.time <= @endDate
    GROUP BY InstaTime
    ) QueryData
order by InstaTime desc

现在,如果没有匹配的004或003值,它们将报告为零,而不是为空。试试这个,看看它是否符合您的需要。

好吧,我找到了一个解决方案,但没有找到问题,因为我仍然不明白为什么在sql server中我可以看到数据,而在SSR的QueryDesigner中我仍然有0.00值

这是一个关系数据库,我使用两个表,来自同一个数据库 DB:Timeseries 表1:小时,从这里开始我使用值、时间、tagId 表2:标记,从这里我使用标记名tagId

两者都有相同的tagId,但我刚刚意识到这个信号MSF_PDI_004与表标记名中的标记名无关。创建该信号时一定是错误的

我更改了查询,没有使用标记名,而是使用了标记ID,一切正常,我在SSRS中看到的值与在SQL SERVER中看到的值相同

我仍然认为这很奇怪,因为如果查询在SQL SERVER上工作,为什么对SSR不应该是透明的


我希望有人能向我解释这一点,感谢那些花时间阅读和帮助我的人。

为什么你的表达中有第一个?也许第一个值总是空的。创建一个简单的列表报告并列出所有数据值,而无需先使用。你看到了什么?你好,谢谢你的回复,我使用的是first,因为这个文本框我只需要一天早上6点的值,所以它的订单号是desc,第一天是早上6点。我可以看到查询结果,没有空格或空值。好的,这是@laugh Vergil在sql和ssrs中进行的新查询的结果。谢谢你的回复,我明天会在工作中尝试,因为我这里没有SRS,这个查询看起来更好更干净,MSF_PDI_004是唯一一个有负小数tho的查询,在查询之后我可以正常地看到SQL-0.0449中的ouptut。。。但是当我想在SSRS空白文本框中发布它时,所有其他的都是正常数据。无论如何,我会尝试一下,让你知道,非常感谢!好的,我更改了查询,SQL中的结果是相同的,但是在SSRS中,现在我可以在所有值中看到0.00。我用这个查询创建了一个新的数据集,新数据集的结果显示在红方块中,旧数据集显示在蓝方块中。[SQL][SSRS][SSRS FIRST]嗯,真的很奇怪。我想让你做个测试。在我上面提供的查询中,请将每个Then H.value更改为Then H.value*-1,然后重新运行[SSRS]过程并显示其输出。我想看看在SSRS的MSF_PDI_003列中,负数是否显示为零,正数是否显示为MSF_PDI_004列中的数字。奇怪!我按照您的建议对SQL查询进行了更改,它显示正常的负小数,但另一个仍然是0,不显示数据。我在SQL查询中创建了一个aux列,MSF_PDI_003+MSF_PDI_004作为aux,我可以在SQL SERVER中看到正常结果,并尝试在SSRS中查看它,并向我显示与MSF_PDI_003相同的值,aux列与MSF_PDI_003相同,因此SQL查询它正在执行我在SQL SERVER中看到的正确结果,但它忽略了SSR,因为MSF_PDI_004是0.00,实际显示在SSR中。
declare @startDate  datetime2 = '2017-04-18 11:00',
        @endDate    datetime2 = '2017-04-19 11:00';

SELECT InstaTime,
    MSF_PDI_003,
    MSF_PDI_004
FROM (
    SELECT 
        DATEADD(HH,-5,H.time) AS InstaTime,
        SUM(
            CASE
                WHEN t.tagName = 'analog.MSF_PDI_003.curval'
                    Then H.value
                ELSE 0
            END) as MSF_PDI_003,
        SUM(
            CASE
                WHEN t.tagName = 'analog.MSF_PDI_004.curval'
                    Then H.value
                ELSE 0
            END) as MSF_PDI_004
    FROM hour H
    INNER JOIN tag T 
        ON T.tagId = H.tagId 
    WHERE T.tagName IN 
        ('analog.MSF_PDI_003.curval', 'analog.MSF_PDI_004.curval')
        AND H.time >= @startDate
        And H.time <= @endDate
    GROUP BY InstaTime
    ) QueryData
order by InstaTime desc