我正在創建一個將顯示在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