簡體   English   中英

如何在Visual Studio SSRS 2008中使用SQL將平均值函數與多個條件語句一起使用

[英]How to use the average function with multiple conditional statements using SQL in Visual Studio SSRS 2008

我試圖使用Visual Studio SSRS 2008從SQL數據庫中提取計算的數據。嘗試在select / from / where語句中使用條件條件時遇到問題。 我要嘗試執行的一個示例是,從每5分鍾采集的樣本中找出24小時內(從昨天上午10:00到今天上午10:00)銷售的BTU的平均數量。 我報告的是一家天然氣廠,它在打開時通過閥門運行時具有燃氣流量值。 流經特定打開閥的氣體的BTU值需要平均。 我在下面復制了當前的查詢,但該查詢失敗了,但我認為它已經接近需要的值。 如果下面提到的其他2個標簽> 0,則我想要平均其值的標簽名是DTE_BTU。

SET NOCOUNT ON
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = DateAdd(HOUR,-24,GetDate())
SET @EndDate = GetDate()
SET NOCOUNT OFF
SELECT case when temp.Value > 0 and temp2.value > 0 then AVG(Value where tagname ='DTE_BTU') end AS 'AvgDTEBTU'
From (
SELECT *
FROM History
WHERE History.TagName IN ('PGPOL_ProdVlv')
AND wwRetrievalMode = 'Cyclic'
AND wwCycleCount = 288
AND wwVersion = 'Latest'
AND DateTime >= @StartDate
AND DateTime <= @EndDate)as temp join
(SELECT * FROM History
WHERE History.TagName IN ('DTE_C_SCFM')
AND wwRetrievalMode = 'Cyclic'
AND wwCycleCount = 288
AND wwVersion = 'Latest'
AND DateTime >= @StartDate
AND DateTime <= @EndDate)as temp2 on temp.DateTime = temp2.DateTime
WHERE temp.StartDateTime >= @StartDate and temp2.StartDateTime >= @StartDate

假設我正確理解了您的信息,似乎您真的只需要查看該時間段內歷史記錄表中是否存在其他兩個標簽,因此您不一定需要case語句。

SELECT AVG(Value) as Avg_DTE_BTU
FROM History h
WHERE h.wwRetrievalMode = 'Cyclic'
AND h.wwCycleCount = 288
AND h.wwVersion = 'Latest'
AND h.DateTime >= @StartDate
AND h.DateTime <= @EndDate
AND h.tagname = 'DTE_BTU'
AND EXISTS 
(
  SELECT 1
  FROM History x
  WHERE x.wwRetrievalMode = 'Cyclic'
  AND x.wwCycleCount = 288
  AND x.wwVersion = 'Latest'
  AND x.DateTime >= @StartDate
  AND x.DateTime <= @EndDate
  AND x.tagname = 'PGPOL_ProdVlv'
  AND x.value > 0
)
AND EXISTS 
(
  SELECT 1
  FROM History y
  WHERE y.wwRetrievalMode = 'Cyclic'
  AND y.wwCycleCount = 288
  AND y.wwVersion = 'Latest'
  AND y.DateTime >= @StartDate
  AND y.DateTime <= @EndDate
  AND y.tagname = 'DTE_C_SCFM'
  AND y.value > 0
)

如果在該時間范圍內還存在其他兩個標簽名稱,則上面的值應取該時間范圍內所有DTE_BTU值的平均值,並作為回報給您一行。

我不知道為什么“添加評論”對我來說不可用....無論如何,朋友...我也可以解決此問題,但這是一種不合邏輯的方式...你知道嗎...我想你可以使用或為每個州創建一個表,然后為每個提交使用一個表,然后將FK從表中提交給與您的州相關的每個表。...我的意思是:

您有表“ Submit”,還有...表“ PGPOL_ProdVlv”-表“ DTE_C_SCFM”-表“ DTE_BTU” ...我的意思是為每個狀態使用一個表。事實上,我的意思是(1:N)關系

表“提交”
1.否
2.時間
3,其他欄目

接着

表“ PGPOL_ProdVlv”
1.沒有
2.FK_NoSubmit

表“ DTE_C_SCFM”
1.沒有
2.FK_NoSubmit

以及上面表格中的其他狀態...就我所知,這可能使您的查詢更簡單,更快捷...您正在同時插入這些狀態...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM