2015-12-15 97 views
3

我正在處理查詢,並在Select語句中執行了DateDiff以創建三列,以在查詢中的兩列之間創建微小差異。我現在需要做的是將這些DateDiff結果中的數據放入桶中,但是我一直在堅持如何完成這項工作。SSRS桶中的計算列

這些都是從我的Select聲明算了一筆賬:

,DATEDIFF (minute, ORD_MSG_MST.ORD_RCV_DTTM, PF_MST.ISSU_DTTM) AS 'Order_Issue' 
,DATEDIFF (minute, ORD_MSG_MST.ORD_RCV_DTTM, UNIT_HIST.OCCR_DTTM AS 'Order_XM' 
,DATEDIFF (minute, UNIT_HIST.OCCR_DTTM, PF_MST.ISSU_DTTM) AS 'XM_IS' 

我會嘗試在我FROM聲明添加爲子查詢:

LEFT OUTER JOIN 
    SELECT 
     count(CASE WHEN 'Order_XM'>= 0 AND 'Order_XM' < 10 THEN 1 END) AS '0 - 10', 
     count(CASE WHEN 'Order_XM'>= 11 AND 'Order_XM' < 20 THEN 1 END) AS '11 - 20', 
     count(CASE WHEN 'Order_XM'>= 21 AND 'Order_XM' < 30 THEN 1 END) AS '21 - 30', 
     count(CASE WHEN 'Order_XM'>= 31 AND 'Order_XM' < 40 THEN 1 END) AS '31 - 40', 
FROM ____)) 

但我不知道是什麼表我需要接受我的FROM聲明。而且我不確定這是否是真正做到這一點的正確方法。

有關如何在同一查詢中將查詢中的計算列存入存儲區的任何想法,以便我可以在報表生成器中創建直方圖?

我已經做了大量的搜索,並沒有發現任何東西,這些都是已計算的值。 TIA

回答

0

您可以將您的初始查詢與計算出的DateDiff列一起使用,並將其用作子查詢 - 這將允許您隨後獲得執行分段的主要查詢。

您沒有發佈大部分SQL,因此很難展示完全相關的示例。因此,我將使用MS的Northwind示例數據庫來顯示一個應該很容易遵循並修復自己的查詢的示例。

羅斯文有Orders表有兩個DATETIME列:RequiredDate發貨日期。我的子查詢計算這兩列之間的DateDiff(與days而不是minutes)並將其稱爲Diff。然後,主要查詢爲涵蓋值範圍的三個桶中的每個桶計算COUNT

SELECT 
    COUNT(CASE WHEN Diff >= -50 AND Diff < -25 THEN 1 END) AS '-50 through -25', 
    COUNT(CASE WHEN Diff >= -25 AND Diff < 0 THEN 1 END) AS '-25 thorugh 0', 
    COUNT(CASE WHEN Diff >= 1 AND Diff < 25 THEN 1 END) AS '0 thorugh 25' 
FROM 
    (
     SELECT DATEDIFF(day, RequiredDate, ShippedDate) AS 'Diff' 
     FROM [Northwind].[dbo].[Orders] 
    ) a 

使用此示例,我認爲您應該可以對自己的查詢進行類似更改以獲得您正在查找的結果。