Sql 难以获取以前的查询记录

Sql 难以获取以前的查询记录,sql,ms-access,ms-access-2013,Sql,Ms Access,Ms Access 2013,我有4个不同级别的商店。商店A,商店B,商店C,商店D。商店保存物品。第1项、第2项、第3项、第4项和第5项 我有3张桌子项目表商店表, 和1个查询 跟踪表包含列ID、T_日期、项ID、项名称、存储自、存储至、金额、备注 Store_rec查询表用于检查我的案例中商店中某个项目的更改—商店B中的项目2。它有5列SrNo、T_Date、Location_to/From B to others/From others to B、Received B balance increase和Dispatc

我有4个不同级别的商店。商店A,商店B,商店C,商店D。商店保存物品。第1项、第2项、第3项、第4项和第5项

我有3张桌子项目表商店表, 和1个查询

跟踪表包含列ID、T_日期、项ID、项名称、存储自、存储至、金额、备注

Store_rec查询表用于检查我的案例中商店中某个项目的更改—商店B中的项目2。它有5列SrNo、T_Date、Location_to/From B to others/From others to B、Received B balance increase和Dispatched B balance increase

我的问题是:

我无法在不影响t_日期行数的情况下按升序对SrNo进行排序

我想在Store_rec查询中添加一个余额列,如图所示。余额=以前的余额+已收到-已发送

我在谷歌上搜索,在论坛、教程和示例中阅读,但仍然无法解决我的问题

请帮忙

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];

谢谢你帮助我。我在上面提供的代码中编辑了一些要点。代码如下

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;

我在查询表达式“CASE WHEN Store_From='Store B'然后Store_To ELSE Store_From END AS Location_To”中得到了错误消息语法error missing运算符。所以我尝试了vba代码。创建Tmp查询是可以的。但是我在vba代码中得到了错误消息来创建“Store\u rec query”。选择T1.Location_To、T1.Received、T1.Dispatched、SUMT.Dispatched As remaingbal作为T1时出错左连接选择为null-CASTDispatched As INT+CASTReceived As INT、0 As Dispatched、id作为T.id上的T作为Tmp中的T
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
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;