2017-03-23 5 views
-2

私は仕事のスケジュールを毎日設定しました。次の日にレコードをチェックすると、レコードはいつか完全に移動しませんでした。どうしてか分かりません。ここで SQLジョブスケジューリングがすべてのレコードをしばらく動かしていないのはなぜですか?

[F_ItemDailySalesParent] = 18741 06 3月、2017年に

た場合に[JC_ItemDailySalesParent] = 21027回のと合計記録で見つかった私のクエリ

INSERT INTO [HQWebMatajer].[dbo].[F_ItemDailySalesParent] 
(
[ItemID] 
    ,[StoreID] 
    ,[ItemLookupCode] 
    ,[DepartmentID] 
    ,[CategoryID] 
    ,[SupplierID] 
    ,[Time] 
    ,[Qty] 
    ,[ExtendedPrice] 
    ,[ExtendedCost] 
) 
SELECT 
[ItemID] 
    ,[StoreID] 
    ,[ItemLookupCode] 
    ,[DepartmentID] 
    ,[CategoryID] 
    ,[SupplierID] 
    ,[Time] 
    ,[Qty] 
    ,[ExtendedPrice] 
    ,[ExtendedCost] 
FROM 
    [HQMatajer].[dbo].[JC_ItemDailySalesParent] 
where time=convert(Date,getdate()-1) 

合計レコードです私はいくつかの列や他の何かを見逃しているかもしれないと思う!...そして、私は条件をwhere time=convert(Date,getdate())に変更することによって同じクエリを実行します。それから、完全なレコードが失われずに実行されます。

注:どちらの表もジョブスケジュールです。 [JC_ItemDailySalesParent]テーブルは午前2時に実行されます。 F_ItemDailySalesParentは早朝6時に作動します。

なぜ同じレコードを持つ2つのテーブルを要求しないでください。それは別の目的のためです。

ありがとう、

+1

私は 'GETDATE()を使用してから逃げるだろう - 1 'と明示的に' DATEADD() '関数を使用します。サンプルデータと期待される出力を提供する必要があります。 'SYSDATETIME()'を調べて、あなたの現地時間との比較を確認してください。あなたの 'WHERE'句にそのレコードのレコードが実際に存在することを確認してください。これはかなり簡単です。 – scsimon

+0

MySQLまたはMS SQL Serverを使用していますか?関与していない製品にはタグを付けないでください。 – jarlh

+0

@scsimonシステムの日付を変更する機会はありません。両方のジョブとテーブルが同じサーバーにあるので –

答えて

0

常にテーブルに一意の識別子を持つようにしてください。アイテムID、StoreID、ItemLookupCode、のDepartmentID、区分、仕入先との組み合わせを想定すると、時間は一意である:

INSERT INTO HQWebMatajer.dbo.F_ItemDailySalesParent 
(ItemID 
, StoreID 
, ItemLookupCode 
, DepartmentID 
, CategoryID 
, SupplierID 
, Time 
, Qty 
, ExtendedPrice 
, ExtendedCost 
) 
SELECT ItemID 
    , StoreID 
    , ItemLookupCode 
    , DepartmentID 
    , CategoryID 
    , SupplierID 
    , Time 
    , Qty 
    , ExtendedPrice 
    , ExtendedCost 
FROM HQMatajer.dbo.JC_ItemDailySalesParent src 
LEFT JOIN HQWebMatajer.dbo.F_ItemDailySalesParent tgt 
    ON tgt.ItemID = src.ItemID 
    AND tgt.StoreID = src.StoreID 
    AND tgt.ItemLookupCode = src.ItemLookupCode 
    AND tgt.DepartmentID = src.DepartmentID 
    AND tgt.CategoryID = src.CategoryID 
    AND tgt.SupplierID = src.SupplierID 
    AND tgt.Time = src.Time 
WHERE tgt.ItemID IS NULL; 
関連する問題