2016-10-24 8 views
0

以下に示すように、どのようにSQLでデータをSQLで処理することができるのでしょうか。各行について:MachCodeとWorkType(これらの二つによって、すなわち順) 2つの行の差をSQLの他の2つの条件と比較して計算する

  • に関して

    1. Iは、新しい列内の他の1つの日付(および時刻)からDIAM変化を計算します。差がない場合はゼロで塗りつぶします。
    2. 厚さと勾配も同様です。

    データ(新しい列に):

    MachCode WorkType Date Time Diam Thickness Slope 
    
    XHPUS0001 Lathing 07MAY07 0:00 873.30000 . . 
    XHPUS0001 Lathing 13DEC07 9:55 863.80000 . . 
    XHPUS0001 Lathing 05FEB10 8:40 863.80000 . . 
    XHPUS0001 Lathing 03APR12 14:32 890.60000 32.5000 11.0000 
    XHPUS0001 Facing 02JAN13 19:24 876.00000 . . 
    XHPUS0001 Lathing 12JAN15 7:00 . . . 
    XHPUS0002 Lathing 07MAY07 0:00 890.90000 . . 
    XHPUS0002 Lathing 07SEP09 7:26 890.90000 32.5000 . 
    XHPUS0002 Facing 29NOV10 12:15 884.45000 32.5000 . 
    XHPUS0002 Lathing 10SEP11 20:46 878.85000 . . 
    XHPUS0002 Lathing 04FEB12 21:49 874.10000 30.0000 loka.00 
    XHPUS0003 Lathing 19SEP07 0:00 879.90000 . . 
    XHPUS0003 Lathing 23.marras.09 15:49 870.80000 . . 
    XHPUS0003 Lathing 4.marras.10 15:15 870.80000 . . 
    XHPUS0003 Lathing 06NOV10 13:24 864.10000 . . 
    XHPUS0003 Facing 27APR11 10:13 852.30000 . . 
    XHPUS0003 Lathing 17SEP11 19:31 847.00000 . . 
    XHPUS000323 Lathing 17FEB09 0:00 868.05000 . . 
    XHPUS000323 Lathing 22NOV09 12:50 868.05000 31.5100 loka.00 
    XHPUS000323 Lathing 06SEP10 13:35 857.80000 31.5100 loka.00 
    XHPUS000323 Lathing 02NOV10 15:00 890.80000 28.0000 . 
    XHPUS000323 Lathing 26SEP11 11:11 879.70000 . . 
    XHPUS000323 Lathing 29DEC11 13:04 859.50000 30.5000 . 
    XHPUS000323 Lathing 28JAN12 8:53 857.60000 . . 
    XHPUS000323 Lathing 28JAN12 11:58 857.60000 . . 
    XHPUS000323 Lathing 13OCT12 19:37 852.15000 . . 
    XHPUS000323 Lathing 31OCT12 14:03 890.50000 32.5000 11.0000 
    XHPUS000323 Facing 16.marras.13 19:52 888.70000 . . 
    XHPUS000323 Lathing 12OCT13 13:49 886.70000 30.8000 loka.00 
    XHPUS000323 Lathing 12OCT13 14:17 886.70000 30.8000 loka.00 
    

    Iは、外側の日付が早い時期にある、同じタイプのTOP 1に適用され、選択コード

    select * from T1 order by MachCode, WorkType, Date, Time; 
    
  • +0

    どのバージョンのSQL Serverですか? – dnoeth

    +1

    その日付フィールドはテキストフィールドですか?日付/時刻2は別のフィールドですか? – Cato

    +0

    @AndrewDeightonこれは日付型ddMMMyy(多くの形式の1つ)です。はい、日付と時刻は2つの異なる列です。 –

    答えて

    0

    と試み日付降順で注文しています

    select T1.*, 
         COALESCE(T1.Diam - DQ.Diam , 0) DiamDelta, 
         COALESCE(T1.thickness - DQ.thickness,0) ThicknessDelta, 
         COALESCE(T1.slope - DQ.slope,0) SlopeDelta from T1 
    
         OUTER APPLY (SELECT TOP 1 T1A.diam, T1A.thickness,T1A.slope FROM T1 T1A 
            WHERE T1A.MachCode = T1.MachCode 
              AND T1A.WorkType  = T1.WorkType  
              AND (T1A.DATE < T1.Date OR T1A.DATE = T1.Date AND T1A.Time < T1.Time) 
            ORDER BY T1A.Date DESC , T1A.time DESC) DQ 
        order by T1.MachCode, T1.WorkType, T1.[Date], T1.[Time]; 
    
    +0

    お試しいただきありがとうございます。それを確認させて。 –

    +0

    選択T1 * 19 COALESCE(T1.DiameterAfterFacing - DQ.DiameterAfterFacing、0)DiamDelta、 ________ ERROR 22から322:構文エラー、次のいずれかを期待:、!!、&、*! EQ、GE、GET、GT、GTT、LE、LET、LIKEのような、 LT、LTT、NE、NET、OR、^ =、|、||、〜=。 ERROR 76-322:構文エラーです。文は無視されます。 –

    +0

    @MANU - このMicrosoft SQL Serverはありますか?それとも、それは別のSQLバージョン、SASでしょうか? – Cato

    関連する問題