我有4-6个表,但是主要的是LRTTable和TempTable。他们使用INNER JOIN进行联接,结果集是LEFT JOIN和其他6个表。
LRTable和Temp Table包含商店ID,PCC ID,COF NO,业务名称,状态,地址和其他一些列。 LRTable可以具有相同商店ID的重复记录,但记录的COF号为(0,7987987),而业务名称(食品和零售)不同。
临时表具有商店ID PCC。这两个的组合是Access中的主键。
查询能够正确地基于TempTable从LRTable中提取所有数据。例如,当临时表中存在匹配项时,查询将从LRtable中提取所有记录(包括重复项),并根据状态码和业务范围进行排序。这样,我确保活动记录和食物记录都位于顶部。
我需要实现的是,我不希望查询结果集中的每个商店都有多个记录,而是只希望结果集中每个商店的记录集中的最高记录。我可以使用第一个函数来实现这一点,但是它的选择值来自LRTable而不是子查询结果
有没有一种方法可以从子查询中选择?
LRTable:
Store ID PCC ID Status Line of Business Name COF No
---------- -------- ---------- -----------------------
1 123 Active Food 999
1 123 InActive Food 89899
1 123 Active Retail 0
2 222 Active Retail 0
2 222 InActive food 76767
临时表
Store ID : 1 and 2
PCC : 123 and 222
Result:
- 1,0
- 2,0
Expected output:
- 1,999
- 2,76767
下面是带有第一个
的查询SELECT StoreID,FIRST (COF No) from
(
select * from
(
SELECT distinct TempTable.[Avendra ID],
TempTable.[Marsha Code],
LRTable.[Concept Name],
LRTable.[Outlet (Store) Name],
LRTable.[Outlet Street Address Text ID],
LRTable.[Outlet City ID],
LRTable.[Outlet State ID],
LRTable.[Outlet Zip Code ID],
LRTable.[Status Code ID],
LRTable.[Outlet SAP ID ID],
LRTable.[Outlet PCC ID ID],
LRTable.[COF Number ID],
CLPSource.[Brand Mandated],
FROM (
(
(
(
(
(
LRTable INNER JOIN TempTable
ON LRTable.[Outlet PCC ID ID] = TempTable.[PCC ID]
AND LRTable.[Store Number ID] = TempTable.[Store Number ID]
) LEFT JOIN CLPSource
ON TempTable.[Avendra ID] = CLPSource.[Avendra Customer ID]
) LEFT JOIN OasisReportSource
ON TempTable.[Marsha Code] = OasisReportSource.[Marsha])
ORDER BY LRTable.[Status Code ID],
LRTable.[Line of Business Name]))
Group by LRTable.[StoreID]
答案 0 :(得分:0)
使用LRTemp表和Temp Table面板中提供的数据,实际输出和所需输出,我认为可以使用FIRST聚合函数(即
)来完成。SELECT StoreID, FIRST(PCC ID), FIRST(Status), FIRST(Line of Business Name), FIRST (COF No)
FROM (joined LRTable and TempTable)
GROUP BY StoreId
然后,您应该获取每个StoreId的第一个记录数据。