难以获取以前的查询记录
Having difficulty in getting previous query record
我在不同级别有 4 家商店。 (A 店、B 店、C 店、D 店)。商店保留物品。 (项目 1、项目 2、项目 3、项目 4 和项目 5)。
我有 3 tables(项目 Table,商店 Table,
Tracking Table) 和 1 个查询 (
Store_rec query for Item2 in Store B).
跟踪 table 有列(ID、T_Date、Item_ID、Item_Name、Store_From、Store_To、金额、备注) .
Store_rec 查询 table 是检查商店中商品的更改(在我的例子中 - 商店 B 中的商品 2)。它有 5 列 (SrNo, T_Date, Location_To/From (From B to others/ From others to B), Received (B balance increase) and Dispatched (B balance decrease).
我的问题是:
我无法在不影响T_Date的行号的情况下对SrNo进行升序排序。
我想在 Store_rec 查询中添加余额列,如图所示。 (余额 = 之前的余额 + 已接收 - 已发送)。
我在 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];
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
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;
我在不同级别有 4 家商店。 (A 店、B 店、C 店、D 店)。商店保留物品。 (项目 1、项目 2、项目 3、项目 4 和项目 5)。
我有 3 tables(项目 Table,商店 Table, Tracking Table) 和 1 个查询 ( Store_rec query for Item2 in Store B).
跟踪 table 有列(ID、T_Date、Item_ID、Item_Name、Store_From、Store_To、金额、备注) .
Store_rec 查询 table 是检查商店中商品的更改(在我的例子中 - 商店 B 中的商品 2)。它有 5 列 (SrNo, T_Date, Location_To/From (From B to others/ From others to B), Received (B balance increase) and Dispatched (B balance decrease).
我的问题是:
我无法在不影响T_Date的行号的情况下对SrNo进行升序排序。
我想在 Store_rec 查询中添加余额列,如图所示。 (余额 = 之前的余额 + 已接收 - 已发送)。
我在 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];
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
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;