我正在创建一个将显示在SSRS报告中的数据集。SQL在选择中选择
我在一项工作中查询,该工作在每个月的第一天以滚动方式将计数放入表[dbo].[CountMetersDue]
;该值在整个月中发生变化,因此需要在开始时进行快照。
我设置了使用自定义表达式生成累积趋势图的报告。基本上取一个值,再除以另一个百分比。因此,我有两个需要组合的查询......花了我很多时间让我的头脑圆满!
我只是需要最后一点的帮助。
SELECT (SELECT [Count]
FROM [MXPTransferDev].[dbo].[CountMetersDue]
WHERE [MXPTransferDev].[dbo].[CountMetersDue].[DateTime] =
[MXPTransferDev].[dbo].[Readings].[dateRead]) AS [MetersDue],
COUNT(readingid) AS [TotalReadings],
CONVERT(DATE, dateread) AS [dateRead]
FROM [MXPTransferDev].[dbo].[Readings]
WHERE ([MXPTransferDev].[dbo].[Readings].[dateRead] BETWEEN
'01-may-11' AND '31-may-11')
AND (webcontactid IS NOT NULL)
AND (meter = 1)
GROUP BY CONVERT(DATE, [MXPTransferDev].[dbo].[Readings].[dateRead])
CREATE TABLE [dbo].[CountMetersDue](
[Count] [int] NULL,
[DateTime] [datetime] NULL
) ON [USER]
GO
ALTER TABLE [dbo].[CountMetersDue]
ADD CONSTRAINT [DF_CountMetersDue_DateTime] DEFAULT (getdate()) FOR [DateTime]
GO
CREATE TABLE [dbo].[Readings](
[readingId] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[dateRead] [datetime] NOT NULL,
[meter] [int] NOT NULL,
[webcontactid] [bigint] NULL,
Readings
readingId meter reading dateRead webcontactid
583089 4 3662 2011-05-25 15:00:33.040 479
583207 3 682 2011-05-25 15:00:33.027 479
583088 2 98064 2011-05-25 15:00:33.007 479
CountMetersDue
Count DateTime
2793 2011-12-01 00:00:00.000
1057 2011-05-01 14:08:20.437
610 2011-03-01 00:00:00.000
顺便说一句,增加了两个空格的一个行的结果结束越线。这比单独的文本块更容易在眼睛上。 – Mr47 2011-05-27 09:01:16
你可以发布你的表的完整DDL吗?这将使它更容易帮助。 – Tony 2011-05-27 11:24:53
我认为你的餐桌设计可能需要改变。你有一个表[CountMetersDue]',它有一个字段'[Count]'。计数器的计数不应该从查询中派生而是从表中读取? 为什么你需要从表中选择'TOP 1'?此表中还有多少行数?正如我之前所说的那样,发布表格的DDL,因为可能有另一种方法来获得您需要的结果。 – Tony 2011-05-27 11:31:41