2
我們每個月都會獲得一批新的小部件。我們知道這些小部件的產品代碼是庫存,正在等待使用。每個人都有一個可用日期,之後可以使用。使用具有子查詢的聚合函數
表WidgetStock
色譜柱:爲widgetid,AvailabilityDate,
另一個表具有窗口小部件,即,所述的用途時,首先,使用它。
表WidgetsUsed
列:日期時間,操作員
我想白天小時,我已經使用首次新鮮部件的數量看,自啓動月份。小部件將被多次使用,所以每小時一次簡單的不同計數是不夠的,因爲小部件將被重複計數。
在我看來,這需要查看可用數字的列表,這些數字是通過查詢爲組中的每一行更新的。
下面的查詢將不能工作,但希望它說明了什麼我想實現:
declare @StartofMonth datetime
set @StartofMonth = '20160901'
select CONVERT(varchar, wu.datetime, 103)'Date'
, convert(char(2), wu.datetime, 108)'Hour'
--Problem Line below
, SUM(case when wu.StockNo in (select ba.NUMBER
from widgetStock ba
where availability_date between CONVERT(varchar, wu.datetime, 103) and @StartofMonth) then 1 else 0 end) 'Number Used'
from widgetsUsed wu
left join widgetStock ws on wu.StockNo = ws.NUMBER
where wu.OPERATOR = 'WidgetWorld'
and DATETIME between '20160914' and '20160916'
group by CONVERT(varchar,wu.datetime,103), convert(char(2), wu.datetime, 108)
任何幫助表示讚賞。提前致謝。
樣本數據和預期的結果做解釋很多問題奇觀。 –
@tompreston你會得到什麼錯誤? –
@JibinBalachandran「無法對包含聚集或子查詢的表達式執行聚合函數」。 – User632716