2016-09-08 15 views
2

私は4つの異なるレベルのストアを持っています。 (店舗A、店舗B、店舗C、店舗D)。店舗は商品を保管しています。 (項目1、項目2、項目3、項目4および項目5)。前回のクエリレコードを取得するのが難しい

私は3つのテーブル(表項目、店表、 Tracking Table)と1つのクエリ( Store_rec query for Item2 in Store B)を持っています。

トラッキングテーブルには列(ID、T_Date、Item_ID、Item_Name、Store_From、Store_To、Amount、Remark)があります。

Store_recクエリテーブルは、ストア内のアイテム(私の場合はストアBのアイテム2)の変更を確認するためのものです。これは、5つのBに(Bから他の人に/他人からの列(SrNo、T_Date、Location_To /)は、受信し(B残高の増加)と(B残高減少に送出されます)を持つ

私の問題は、次のとおりです。

    私は写真のようにStore_recクエリのバランス列を追加したいT_Dateの行数に影響を与えずに昇順に

  1. (バランス=前バランス+受信を

  2. 私はないソートSrNoすることができます - 。。派遣します)。

私はGoogleで検索し、フォーラム、チュートリアル、例を読みましたが、まだ問題を解決できません。

助けてください。

SELECT (
     SELECT COUNT(aa.[ID]) + 1 
     FROM Tracking AS aa 
     WHERE (
       t.[Store_From] = "Store B" 
       OR t.[Store_To] = "Store B" 
       ) 
      AND aa.[ID] < t.[ID] 
     ) AS SrNo 
    ,t.T_Date 
    ,IIf(t.[Store_To] = "Store B", t.[Store_From], t.[Store_To]) AS [Location_To/From] 
    ,IIf(t.[Store_To] = "Store B", t.[Amount], 0) AS Received 
    ,IIf(t.[Store_From] = "Store B", t.[Amount], 0) AS Dispatched 
FROM Tracking AS t 
WHERE (
     t.[Store_From] = "Store B" 
     OR t.[Store_To] = "Store B" 
     ) 
    AND t.[Item_Name] = "Item 2" 
ORDER BY t.[T_Date]; 

答えて

0
select T1.id ,IIF(Store_From = 'Store B',Store_To, Store_From) ,IIF(Store_To = 'Store B',0, Amount) AS Dispatched, IIF(Store_From = 'Store B',0, Amount) AS Received,SUM(T.Received) AS RemainingBal 
    From track as T1 

left join (

select id,(-IIF(Store_To = 'Store B',0, Amount) + IIF(Store_From = 'Store B',0, Amount)) AS Received 
    From track 

) as T ON T.id <= T1.id 

WHERE Item_Id = 'Item_2' 
     AND (Store_From = 'Store B' 
       OR Store_To = 'Store B' 
      ) 

GROUP BY 
     T1.Store_From , 
     T1.Store_To,T1.id,Amount 
     ORDER BY T1.id 
0
SELECT id , 
     CASE WHEN Store_From = 'Store B' THEN Store_To 
      ELSE Store_From 
     END AS Location_To , 
     CASE WHEN Store_To = 'Store B' THEN 0 
      ELSE Amount 
     END AS Dispatched , 
     CASE WHEN Store_From = 'Store B' THEN 0 
      ELSE Amount 


     END AS Received 
INTO #Tmp 
FROM dbo.Tracking 
WHERE Item_Id = 'Item_2' 
     AND (Store_From = 'Store B' 
       OR Store_To = 'Store B' 
      ) 

SELECT T1.Location_To ,  
     T1.Received ,T1.Dispatched , 
     SUM(T.Dispatched) AS RemainingBal 
FROM #Tmp AS T1 
     LEFT JOIN (SELECT ISNULL((-CAST(Dispatched AS INT) + CAST(Received AS INT)), 
            0) AS Dispatched , 
          id 
        FROM #Tmp 
       ) AS T ON T.id <= T1.id 
GROUP BY T1.Location_To , 
     T1.Dispatched , 
     T1.Received 
+0

続くようです。 私はvbaコードを試しました。 Tmpクエリの作成はOKです。しかし、私は 'store_rec query'を作成するためにVBAコードでエラーmsgを取得しました。 SELECT ASNULL(SELECT ISNULL((-CAST(ディスパッチされたAS INT))+ CAST(受信されたAS INT)は、TmpからRemainingBalとしてT1.Location_To、T1.Received、T1.Dispatched、SUM(T.Dispatched) )、0)AS AS T ON T.id <= T1.id GROUP BY T1.Location_To、T1.Dispatched、T1.Received " –

0

私を助けるため、あなたに感謝します。上記のコードでいくつかの点を編集しました。コードは、 "クエリ式で構文エラー(演算子がありません) 'CASE WHEN Store_From = '' THEN ELSE Store_To Location_To AS Store_From END' ストアB" 私は、エラーメッセージまし

SELECT T1.TDate,IIF(T1.Store_From = 'Store B',T1.Store_To, T1.Store_From) AS Location, IIF(T1.Store_From = 'Store B',0, T1.Amount) AS Received, IIF(T1.Store_To = 'Store B',0, T1.Amount) AS Dispatched, SUM(T.Received) AS Balance FROM Tracking AS T1 LEFT JOIN (SELECT aa.id, aa.TDate, (-IIF(aa.Store_To = 'Store B',0, aa.Amount) + IIF(aa.Store_From = 'Store B',0, aa.Amount)) AS Received FROM Tracking AS aa WHERE aa.Item_Name = 'Item 2') AS T ON T.id <= T1.id WHERE Item_Name = 'Item 2' AND (Store_From = 'Store B' OR Store_To = 'Store B') GROUP BY T1.TDate,T1.Store_From, T1.Store_To, T1.id, Amount ORDER BY T1.TDate; 
関連する問題