簡體   English   中英

獲取最近兩天的生產數據

[英]Get production data for the last 2 days

我有一個關於從兩天前獲取制造數據的問題。 我的代碼有效,但我認為其實現效率低下。 我有這個

// YESTERDAYS FABRICATION
            $yesterdaySql = "SELECT SUM(CURRENT_WEIGHT) AS TOTALYESTERDAYWEIGHT FROM FABRICATION_HIST 
                                WHERE TO_CHAR (FAB_ENTRY_DATE,'MM/DD/YYYY') = TO_CHAR(SYSDATE - 1, 'MM/DD/YYYY') 
                                AND PROJECT_NAME = :projName";
            $yesterdayParse = oci_parse($conn, $yesterdaySql);
            oci_bind_by_name($yesterdayParse, ":projName", $_SESSION['cd-dropdown']);            
            oci_define_by_name($yesterdayParse, "TOTALYESTERDAYWEIGHT", $sumWeightYesterday);
            oci_execute($yesterdayParse);

            // TWO DAYS AGO FABRICATION
            $twoDaysSql = "SELECT SUM(CURRENT_WEIGHT) AS TOTALTWODAYSAGOWEIGHT FROM FABRICATION_HIST 
                                WHERE TO_CHAR (FAB_ENTRY_DATE,'MM/DD/YYYY') = TO_CHAR(SYSDATE - 2, 'MM/DD/YYYY') 
                                AND PROJECT_NAME = :projName";
            $twoDaysParse = oci_parse($conn, $twoDaysSql);
            oci_bind_by_name($twoDaysParse, ":projName", $_SESSION['cd-dropdown']);            
            oci_define_by_name($twoDaysParse, "TOTALTWODAYSAGOWEIGHT", $sumWeightTwoDays);
            oci_execute($twoDaysParse);

我知道這是非常低效的。 任何人都可以建議我,這樣我就可以在一個查詢中獲取兩天的查詢?

提前致謝

這個給你 ...

SELECT
    SUM(CASE WHEN TRUNC(FAB_ENTRY_DATE) = TRUNC(SYSDATE) - 1 THEN CURRENT_WEIGHT END) AS TOTALYESTERDAYWEIGHT,
    SUM(CASE WHEN TRUNC(FAB_ENTRY_DATE) = TRUNC(SYSDATE) - 2 THEN CURRENT_WEIGHT END) AS TOTALTWODAYSAGOWEIGHT
FROM FABRICATION_HIST 
WHERE FAB_ENTRY_DATE >= TRUNC(SYSDATE) - 2
    AND FAB_ENTRY_DATE < TRUNC(SYSDATE)
    AND PROJECT_NAME = :projName
;

...甚至可以通過以下方式索引:

create index i_fabrication_hist_something
on t_fabrication_hist (project_name, fab_entry_date)
compress 1
compute statistics
;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM