特有的價值觀我有SQL表下面的名字TEST_T基於一個塔和其他列的SQL
SKU_ID DC_ID CRT_DTTM FIELD_NAME TOTAL
------------------------------------------------------------------------
sku1 dc1 2017-08-02 02:28:41.711 FIELD1 5
sku1 dc1 2017-08-01 01:28:41.711 FIELD1 4
sku2 dc1 2017-08-02 03:12:10.064 FIELD1 6
sku2 dc1 2017-08-01 04:12:10.064 FIELD1 1
sku3 dc2 2017-08-02 07:32:46.795 FIELD1 3
sku4 dc2 2017-08-02 10:44:09.347 FIELD1 2
而且有很多不同DC_ID的記錄,上面只是舉例。 我有這將總結道達爾對所有具有DC_ID爲DC1記錄的以下工作查詢
select A.DC_ID , sum(TO_NUMBER(A.TOTAL)) as SUM FROM (
Select A.DC_ID, A.SKU_ID, A.CRT_DTTM, A.FIELD_NAME, A.TOTAL
FROM TEST_T A
INNER JOIN (
Select DC_ID, FIELD_NAME, Max(CRT_DTTM) as LatestDate, SKU_ID from TEST_T
Where DC_ID = 'dc1'
AND FIELD_NAME = 'FIELD1'
Group By DC_ID, FIELD_NAME, SKU_ID
) B
on A.CRT_DTTM = B.LatestDate
and A.SKU_ID = B.SKU_ID
and A.DC_ID = B.DC_ID
and A.FIELD_NAME = B.FIELD_NAME)
Group By A.DC_ID;
,這將給結果作爲
A.DC_ID SUM
---------------
dc1 11
如何修改上面的查詢中通用的方式來處理很多很多DC_ID的這樣一種方式,我會得到的結果如下
A.DC_ID SUM
---------------
dc1 11
dc2 5
dc3 7
dc4 9
dc5 18
etc.....
改變你的'where'條件的子查詢:'凡DC_ID =「DC1」 和FIELD_NAME =「FIELD1''是什麼阻止其他'dc_id'。 – SqlZim
我相信這是因爲你加入了'dc1'的最新日期,即'2017-08-02 03:12:10.064'。將日期轉換爲「日期」以獲得您想要的。 –
你已經標記了這個問題sql-server,但是微軟的sql server不支持'to_number'。你正在使用哪種RDBMS? –