我有2個表。一個是銷售表(header
),另一個是銷售線(lines
)。查詢結果中的存儲過程SQL
我想要做的是找出是否修改了銷售表或銷售行中的任何記錄。如果他們被修改,我想將整個銷售訂單插入到另一個表中。我使用數據庫ModifiedDateTime
中的一列(銷售行中的更改不會影響salestable中的修改日期,反之亦然)。
例如 - 銷售表:
SalesID DeliveryAddress ModifiedDatetime
1 Street1 2017-04-20 2:00:00
2 Street3 2017-04-19 3:00:00
銷售直線
SalesID ItemId Qty ModifiedDateTime
1 100 2 2017-04-20 3:00:00
1 101 3 2017-04-20 2:00:00
2 100 5 2017-04-19 1:00:00
所以我有一個存儲過程,而從這些表中選擇記錄並將其插入到其他表。它使用修改日期時間來了解哪些記錄已被修改。我想要做的是將整個訂單及其行插入到集成表中。
我現在要做的就是
Insert into IntegrationSalesTable (salesid, deliveryaddress, modifieddatetime)
select salesid, deliveryaddress, modifieddatetime
from salestable
where modifieddatetime > 2017-04-20 2:30:00
而對於salesline
Insert into IntegrationSalesLine(salesid, itemid, qty, modifieddatetime)
select salesid, itemid, qty, modifieddatetime
from salestable
where modifieddatetime > 2017-04-20 2:30:00
現在,我得到IntegrationSalesTable
空 - 和IntegrationSalesLine
有該行:
SalesID ItemId Qty ModifiedDateTime
1 100 2 2017-04-20 3:00:00
我想要什麼實現:
IntegrationSalesTable:
SalesID DeliveryAddress ModifiedDatetime
1 Street1 2017-04-20 2:00:00
IntegrationSalesLine:
SalesID ItemId Qty ModifiedDateTime
1 100 2 2017-04-20 3:00:00
1 101 3 2017-04-20 2:00:00
我有一個想法,我需要選擇行和表中的所有修改的銷售訂單,然後使用這些數據運行查詢。但我想不出辦法做到這一點。任何建議我怎麼能達到這個結果?
覺得你在做最後一個表是錯誤的。 1:00:00的銷售去哪裏了?爲什麼在2:00:00出現一個條目,當插入查詢顯式地在2:30:00之後給出一個日期時?另外,爲什麼'IntegrationSalesTable'中的字段與'SalesTable'中的格式不匹配? – antipattern
也可以假設在某個日期和時間之後的所有銷售都被修改了嗎?我認爲你需要創建日期+修改日期來檢測修改的條目,否則(或包含標誌的字段) – antipattern
是的,我在表結構中犯了一個錯誤。對不起,這是固定的。關於最後一張表,我想要達到的結果,但不知道如何:)當前查詢的結果高於 – user2893780