【发布时间】:2017-04-19 19:36:57
【问题描述】:
我正在研究 SSRS 中的一个解决方案,它让我发疯,我会在向您展示我的问题之前解释一下:
使用参数@startDate = yeterday 6am 和@EndDate = today 6am,从带有模拟输入数据(来自电流、电压、压力等标签)的表中选择 25 个数据值。现在我们有一个表格,其中包含来自不同 tagID 的从早上 6 点到早上 6 点的 25 个值。
我的问题从只有一个 16 的 tagId 开始,它在 SSRS 表示值中显示为 0.0000,而在 Sql 输出中显示为 -0.00548... 出于实际目的,我将只使用 2 个 tagId(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
这是查询的结果:
SQL QUERY RESULT IN SQL-SERVER
这些是我在 SSRS 的 tablix 文本框中使用的表达式(我为此查询使用了测试数据集:summary_prueba)
=Fields!InstaTime.Value
=Fields!MSF_PDI_003.Value
=Fields!MSF_PDI_004.Value
这里是 SSRS 中表格的结果:
这可能是什么问题? * 是唯一一个负值的,可以强制一轮吗?我应该使用不同的格式吗?
把我逼疯了,找不到问题所在。我试着改变格式,还是一样,请各位大神帮帮我?因为这东西让我晚上睡不着,我开始做噩梦了哈哈。
我使用的是 SQL Server 2012,并用于报告 MS Visual Studio Shell 2010。
【问题讨论】:
-
为什么你的表情中有
First?也许第一个值总是空白。创建一个简单的列表报告并列出所有数据值,而不使用First。你看到了什么? -
您好,感谢您的回复,我使用的是第一个,因为对于那个文本框,我只需要当天早上 6:00 的值,所以它的顺序 desc 和第一天将是早上 6 点。我可以看到查询的结果,并且没有空格或空值。
-
好的,这是@Laughing Vergil 在 sql 和 ssrs 中进行的新查询的结果。 i.imgur.com/GET2Y0N.pngi.imgur.com/iGEk2s7.png
标签: reporting-services sql-server-2012 ssrs-2008 ssrs-2012 ssrs-tablix