Ms access 有没有办法创建自动重置的序列列?
假设我们有一张桌子:Ms access 有没有办法创建自动重置的序列列?,ms-access,Ms Access,假设我们有一张桌子: ReferenceCode PartyCode CreateDate WorkType OtherInfo SubTask AnalystName ID 30697504D 4310600358 07/07/2020 BM_UBE 4310600358 ab john 18 30697504D 4310600358 07/07/2020 BM_UBE 4310600358 ab james 18 30913460D
ReferenceCode PartyCode CreateDate WorkType OtherInfo SubTask AnalystName ID
30697504D 4310600358 07/07/2020 BM_UBE 4310600358 ab john 18
30697504D 4310600358 07/07/2020 BM_UBE 4310600358 ab james 18
30913460D 5242222418 07/07/2020 BM_ACM 5242222418 123 john 20
30913460D 5242222418 07/07/2020 BM_ACM 5242222418 123 james 20
30864396D 3116638557 07/06/2020 BM_MTE 3116638557 q john 16
30864396D 3116638557 07/06/2020 BM_MTE 3116638557 q james 16
30894467D QB13198190 07/06/2020 BM_MTE QB13198190 q john 17
30894467D QB13198190 07/06/2020 BM_MTE QB13198190 q james 17
30912706D QB12446351 07/07/2020 BM_MMO QB12446351 q john 19
30912706D QB12446351 07/07/2020 BM_MMO QB12446351 q james 19
30912706D QB12446351 07/07/2020 BM_MMO QB12446351 q peter 19
我需要这样的输出:
ReferenceCode PartyCode CreateDate WorkType OtherInfo SubTask AnalystName ID Sequence
30697504D 4310600358 07/07/2020 BM_UBE 4310600358 ab john 18 1
30697504D 4310600358 07/07/2020 BM_UBE 4310600358 ab james 18 2
30913460D 5242222418 07/07/2020 BM_ACM 5242222418 123 john 20 1
30913460D 5242222418 07/07/2020 BM_ACM 5242222418 123 james 20 2
30864396D 3116638557 07/06/2020 BM_MTE 3116638557 q john 16 1
30864396D 3116638557 07/06/2020 BM_MTE 3116638557 q james 16 2
30894467D QB13198190 07/06/2020 BM_MTE QB13198190 q john 17 1
30894467D QB13198190 07/06/2020 BM_MTE QB13198190 q james 17 2
30912706D QB12446351 07/07/2020 BM_MMO QB12446351 q john 19 1
30912706D QB12446351 07/07/2020 BM_MMO QB12446351 q james 19 2
30912706D QB12446351 07/07/2020 BM_MMO QB12446351 q peter 19 3
如您所见,Sequence列将为每个ID组重置。如何在MS Access中使用sql查询进行重置
编辑:
除了AnalystName和ID之外,表1中的所有列都是相同的。因此,对于@June7 answer,您需要一个唯一的标识符,您可以使用自动编号字段。我已经使用AutoID列作为AutoNumber数据类型,然后使用下面的查询-
SELECT t.*, (SELECT Count(*)
from MyTable as t2
WHERE (t2.AutoID <= t.AutoID And t2.ID = t.ID)
) AS Sequence
FROM MyTable AS t;
输出屏幕截图:
终于在@June7的帮助下实现了:
SELECT
A.ID,
A.AnalystName,
A.ReferenceCode,
A.PartyCode,
A.CreateDate,
A.WorkType,
A.OtherInfo,
A.SubTask,
Count(B.ID) + 1 AS [Sequence],
A.ItemCount
FROM
vPriorityCaseB AS A
LEFT JOIN
vPriorityCaseB AS B
ON
(
A.ReferenceCode = B.ReferenceCode
OR
(A.ReferenceCode IS NULL AND B.ReferenceCode IS NULL)
)
AND
A.PartyCode = B.PartyCode
AND
A.CreateDate = B.CreateDate
AND
A.WorkType = B.WorkType
AND
(
A.OtherInfo = B.OtherInfo
OR
(A.OtherInfo IS NULL AND B.OtherInfo IS NULL)
)
AND
(
A.SubTask = B.SubTask
OR
(A.SubTask IS NULL AND B.SubTask IS NULL)
)
AND
A.Counter > B.Counter
GROUP BY
A.ID,
A.AnalystName,
A.ReferenceCode,
A.PartyCode,
A.CreateDate,
A.WorkType,
A.OtherInfo,
A.SubTask,
A.ItemCount
其中计数器是我的自动编号。必须这样做,因为在处理大量数据时,使用子查询的速度非常慢