2017-09-04 29 views
0

我試圖通過查詢得到表格中的MAX日期到不同的日期。目前我卡住了,我得到的只是一張基於條件的表。不知道這是否清楚,所以我會用代碼解釋。這是我的時刻代碼:從表格中查詢最大值

let 
    Source = Table.NestedJoin(Table.NestedJoin(SKU,{"SKU"},q_UltColh_NEW,{"SKU"},"qUltColh_NEW",JoinKind.LeftOuter),{"SKU"},r_STK,{"SKU"},"Rep_Stk", JoinKind.LeftOuter), 
. 
. 
. 
#"Expanded Origem" = ... 
    #"Expanded Origem" = Table.ExpandTableColumn(#"Merged Queries", "Origem", {"Desc_ORI", "Parent_ORI"}, {"Origem.Desc_ORI", "Origem.Parent_ORI"}), 
    #"Added Last_Rec" = Table.AddColumn(#"Expanded Origem", "Last_Rec", each 
                  let SKU = [SKU] 
                  in Table.SelectRows(r_GOODSREC,each [SKU]=SKU) 
) 
in 
    #"Added Last_Rec" 

我有兩個表:

SKU  Desc 
46_24_ ABC 
103_5_ DEF 

doc_DATE RowNo SKU  Cod_ART  QTT 
10/01/2017 1  46_24_ 46.24  50 
14/01/2017 1  46_24_ 46.24  100 
14/01/2017 1  103_5_ 103.5  50 
16/01/2017 1  103_5_ 103.5  100 

而且我想:

SKU  Desc Last_Entry Qtt 
46_24_ ABC  14/01/2017 50 
103_5_ DEF  16/01/2017 100 

我的代碼將返回與各列的表: SKU描述Last_Entry
46_24_ ABC表
103_5_ DEF表

我相信一旦我獲得了最大的價值,我可以放寬表格,除非你告訴我這是一個糟糕的理想。

非常感謝你,

回答

0

我用下面的代碼得到這個:

enter image description here

注:

1.我的日期格式爲月/日/年而你的是日/月/年。

2.此外,在您的問題中,您顯示SKU 46_24_的期望QTT爲50;但是您的源表格有100個作爲QTT的最新日期爲SKU 46_24_,這就是爲什麼我的表格有100個而不是50個。

我使用了與您相同的兩個起始表。我把它們稱爲Table1和Table2。 (表1是僅有SKU和Desc列的那個)。

然後,我使用左外連接將這兩個表合併到名爲Merge1的新表中。

我猜的關鍵點是:

我用「分組依據」(即Table.Group)到組每個SKU和列我叫Last_Entry得到它的最大日期值,我包括了所有行中的數據稱爲AllData。以下是本集團通過彈出窗口:

enter image description here

然後,本集團後,我擴大了ALLDATA嵌入式表,並增加了一個新列的標誌,並篩選出其中doc_Date是不相等的行到Last_Entry。

let 
Source = Table.NestedJoin(Table1,{"SKU"},Table2,{"SKU"},"Table2",JoinKind.LeftOuter), 
#"Expanded Table2" = Table.ExpandTableColumn(Source, "Table2", {"doc_Date", "RowNo", "SKU", "Cod_ART", "QTT"}, {"doc_Date", "RowNo", "SKU.1", "Cod_ART", "QTT"}), 
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Table2",{{"doc_Date", type date}}), 
#"Grouped Rows" = Table.Group(#"Changed Type", {"SKU"}, {{"Last_Entry", each List.Max([doc_Date]), type datetime}, {"AllData", each _, type table}}), 
#"Expanded AllData1" = Table.ExpandTableColumn(#"Grouped Rows", "AllData", {"Desc", "doc_Date", "QTT"}, {"Desc", "doc_Date", "QTT"}), 
#"Added Custom" = Table.AddColumn(#"Expanded AllData1", "Custom", each if[Last_Entry]=[doc_Date] then "Last_Entry" else "NotLast_Entry"), 
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = "Last_Entry")), 
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "doc_Date"}), 
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"SKU", "Desc", "Last_Entry", "QTT"}) 
in 
#"Reordered Columns" 
+0

謝謝你的回答。關於筆記: 1.通常與電腦配置有關,我沒有發現這個問題,但我會盡量記住它,因爲日期通常很頭疼; 2.你說得對,我的錯誤,我道歉; 關於答案,我可以複製它,也許是因爲我試圖簡化它,並從第一個表中刪除了很多列。我會繼續嘗試,因爲這可能是我應用你的答案的一個錯誤(另外,這是你如何學習)。 謝謝 – BrunoR

+0

如果你的第一個表格(裝有SKU和Desc的表格)以Table1加載並且第二個表格裝載爲Table2,然後創建一個新的空白查詢並用我的代碼替換新的空白查詢代碼,那麼應該工作好嗎;你應該能夠雙擊不同的應用查詢步驟,看看我是如何完成我對GUI的操作。如果您仍然無法正常工作,我可以稍後提供分步屏幕剪輯。只要讓我知道你是否需要它們。 –