根據日期從 SQLQuery 刪除重複條目你好,
我嘗試使用下面連結的影片來使用 SQLQuery 函數。但是,我有一個問題。
Community.jmp.com/t5/video/gallerypage/video-id/tvcW9lZTE6Ie3IFXxeru0AYNqvj5AB5r
問題:將表 2 與“氣瓶”、“Received_Date”和“批次”合併到表 1 中,其中包含“批次”、“氣瓶”和“Batch_Date”
我需要在“Cylinder”上精確匹配,然後將最近的“接收日期”向後移動到“批次日期”(Batch_Date >= Received_Date)。
我創建了查詢並執行了創建數字標籤的步驟,理論上該標籤應為每個批次僅提供 1 個唯一批號(下表中未顯示)
然而,這就是我得到的
| 批次 | 批次日期 | 汽缸數 | 批號 | 收到日期 |
| 1 | 2023年2月13日 | 55 | A | 2022 年 6 月 14 日 |
| 1 | 2023年2月13日 | 55 | B | 2022年10月21日 |
| 1 | 2023年2月13日 | 55 | C | 2022年11月30日 |
查詢中只能填入 1 行(應該是最後一行 11/30/2022);其他的都是“幽靈”,因為我們只做了 1 個“第 1 批”
有關如何改進 SQL 程式碼以防止重複條目並僅在收到的日期是最近的 <= 批次日期時才選擇條目的任何協助嗎?
這是給出的 SQLQuery 介面的程式碼
選擇不同的 t1.Batch、t1.Batch_Date AS 日期、t1.Cylinder_Number、
t2.Lot_Number, t2.Cylinder_Number AS "Cylinder_Number 2", t2.Lot_Date AS "日期 2", MIN(t2."批次編號") AS "最小批次編號"
來自“表 1”t1
左外連接“表 2”t2
ON ( ( t1.Cylinder_Number = t2.Cylinder_Number ) AND ( t1.Cat_Date >= t2.Lot_Date ) )
分組依據 t1.Batch、t1.Batch_Date、t1.Cylinder_Number、
t2.Lot_Number,t2.Cylinder_Number,t2.Lot_Date;
自動化和腳本編寫回覆:根據日期從 SQLQuery 中刪除重複條目您正在對這些 JMP 表執行 SQL 查詢嗎?可以分享一下桌子嗎?
回覆:根據日期從 SQLQuery 中刪除重複條目這是文件 - 抱歉,本意是附加這些文件。
表1-1和表2-2如上所述。
查詢結果顯示最終表,其中每個批次有多個條目(但如上所述,每個批次應該只有 1 個條目)。
回覆:根據日期從 SQLQuery 中刪除重複條目剛剛用文件回覆了主線程,感謝您的聯繫
回覆:根據日期從 SQLQuery 中刪除重複條目這非常接近我嘗試使用 JMP 有限的 SQL 功能執行的操作的限制(至少在使用資料表時)。使用 SQL + JSL 可能更簡單
Names Default To Here(1);
res = New SQL Query(
Version(130),
Connection("JMP"),
JMP Tables(
["t1" => "$DOWNLOADS\Table1-1.jmp",
"t2" => "$DOWNLOADS\Table 2-2.jmp"]
),
QueryName("SQLQuery2"),
CustomSQL(
"\[SELECT
t1.Cylinder,
t1.Batch,
t1."Batch Date",
t2."Received Date",
t2.Supplier,
t2.Lot
FROM t1
LEFT OUTER JOIN t2 ON
t1.Cylinder = t2.Cylinder
AND t1."Batch Date" >= t2."Received Date"
]\")
) << Run;
res << select where(Row() == Col Max(Row(), :Cylinder, :Batch) | Is Missing(:Lot));
res << Invert Row Selection;
res << delete rows;回覆:根據日期從 SQLQuery 中刪除重複條目您好 - 感謝您的快速幫助!我嘗試了宏,不幸的是,對於某些項目,它保留了最早的可能日期。不過,它似乎並未對所有條目執行此操作(請參見下表的最後一行)。
因此,這是一個明確的改進,同一批次不再有多行,但它並不能始終為相關批次提取正確的批次/接收日期。
例子
| 圓柱 | 批次 | 批次日期 | 收到日期 | 供應商 | 很多 | | 應收到日期 |
| 8 | 2273 | 2023年8月9日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 3 | 2274 | 2023 年 8 月 10 日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 2 | 2275 | 2023 年 8 月 11 日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 10 | 2276 | 2023 年 8 月 12 日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 6 | 2277 | 2023 年 8 月 12 日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 9 | 2278 | 2023 年 8 月 13 日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 1 | 2279 | 2023 年 8 月 14 日 | 2022 年 5 月 20 日 | B | 55 | | 2023 年 6 月 22 日 |
| 212 | 2280 | 2023 年 8 月 15 日 | 2023 年 6 月 22 日 | B | 74 | | (文件正確) |
回覆:根據日期從 SQLQuery 中刪除重複條目我不太確定如何閱讀你的表格。如果我看一下表 2-2,就會發現 1 號汽缸只有 1 行,其接收日期為 2022 年 5 月 20 日

回覆:根據日期從 SQLQuery 中刪除重複條目你好 - 回覆以保持話題活躍。我認為當我更新文件以刪除專有資訊時發生了一些事情。明天我會進一步查看並回覆您。
回覆:根據日期從 SQLQuery 中刪除重複條目感謝您的幫忙!我意識到我的原始資料集中存在錯誤(我對其進行了修改以在該網站上輸入以匿名化資料)。該程式碼一直運作良好,如有其他問題將與我們聯繫。回覆:根據日期從 SQLQuery 中刪除重複條目最後一個問題 - 如何添加從表 2 中拉出更多列到最終查詢表中的位置,即使我沒有將它們用作匹配條件?
我嘗試在 t2."wt%" 列上方添加到程式碼中,但程式碼現在引發錯誤。我還想同時拉入其他列(總共大約 10 列),但不知道如何在不出現錯誤的情況下執行此操作。
謝謝你!
回覆:根據日期從 SQLQuery 中刪除重複條目您遇到哪個錯誤?
他們應該進入 Custom SQL() 部分(我嘗試過,它確實與 t2."wt%" 一起工作得很好)
CustomSQL(
"\[SELECT
t1.Cylinder,
t1.Batch,
t1."Batch Date",
t2."Received Date",
t2.Supplier,
t2.Lot,
t2."wt%"
FROM t1
LEFT OUTER JOIN t2 ON
t1.Cylinder = t2.Cylinder
AND t1."Batch Date" >= t2."Received Date"
]\")
如果您想要 t2 中的所有列,我認為 SQL JMP 使用支援 t2.*