对 Access First() 到 SQL 感到困惑,我尝试使用替代方法,但这给了我错误的数据
Confused on Access First() to SQL, I tried using an alternate but that is giving me the wrong data
我需要获取每组 upc 单元的第一个项目描述,我阅读了很多表格但对如何处理这个问题感到困惑,请帮助。
访问查询
SELECT ItemDescLookups.[Unit UPC Base Item], First(ItemDescLookups.[Item Description]) AS [Item Description]
FROM ItemDescLookups
GROUP BY ItemDescLookups.[Unit UPC Base Item];
我创造了SQL
SELECT TOP (100) PERCENT MIN(dbo.ItemDescLookups.[Item Description]) AS ItemDescription,
dbo.[Overpack Percentages].[Unit UPC Base Item]
FROM dbo.[Overpack Percentages] LEFT OUTER JOIN dbo.ItemDescLookups ON dbo.[Overpack Percentages].[Unit UPC Base Item] = dbo.ItemDescLookups.[Unit UPC Base Item]
GROUP BY dbo.[Overpack Percentages].[Unit UPC Base Item]
ORDER BY dbo.[Overpack Percentages].[Unit UPC Base Item]
原始数据
Unit UPC Base Item, Item Description
0001 1LB ASSTD CHOCOLATES
0001 454 g ASSTD CHOCOLATES
0001 1LB ASST CHOC DISPLAYER
0001 1LB ASST HALF PALLET
0001 1LB ASST CHOC PALLET
0001 1LB ASST CHOC DISPLR
0001 1 LB ASSORTED CHOCOLATES
0001 1LB WRAPPED ASSTD CHOCOLATES
0001 1 LB ASST. CHOC. POLE PACK
0001 454 g ASST CHOC DISPLR
0001 1lb PROMO AC W/FREE 2oz TRL BX
0001 1 LB ASSTD CHOCOLATES
0001 1LB ASSTD CHOCO W/FLAG WRAP
0001 1lb ASSTD CHOC SILVER LABEL
0001 1 LB ASST CHOC DISPLAYER
0001 1lb ASSTD CHOC GOLD LABEL
0001 1LB ASST PALLET
0001 60-RSC 1# AC (8630) POLE DSP
0001 12 OZ ASSTD CHOCOLATES
0002 2LB ASSTD CHOCOLATES
0002 908 g ASSTD CHOCOLATES
0002 2LB ASSTD CHOCOLATES FLOOR
0002 2 LB ASSORTED CHOCOLATES
0002 2LB ASSTD CHOCOLATES HALF PLT
0002 2# ASSORTED PALLET PACK
0002 2LB SAMPLER AST CHOC
0002 2LB ASSTD CHOC W/FLAG WRAP
0003 3LB ASSTD CHOCOLATES
0003 3 LB Asstd Chocolates
0003 3lb Assorted Chocolates
0003 3lb Asstd Chocolates Wrapped
0005 5LB ASSTD CHOCOLATES
0005 5 LB ASSTD CHOCOLATES
0005 2270 g ASSTD CHOCOLATES
预期结果
Unit UPC Base Item, Item Description
0001 1LB ASSTD CHOCOLATES
0002 2LB ASSTD CHOCOLATES
0003 3LB ASSTD CHOCOLATES
0005 5LB ASSTD CHOCOLATES
我从 SQL
得到的结果
Unit UPC Item Item Description
0001 1 LB ASSORTED CHOCOLATES
0002 2 LB ASSORTED CHOCOLATES
0003 3 LB Asstd Chocolates
0005 2270 g ASSTD CHOCOLATES
您可以在 Access 和 SQL 服务器中使用以下内容:
SELECT Data1.Unit,
(select top 1 z.[Item Description] from data1 as z
where z.Unit = data1.Unit ORDER BY z.Unit, z.ID) AS myfirst
FROM Data1
GROUP BY Data1.Unit;
因为没有聚合词,所以我们不必在 group by 子句中包含描述。
请记住,上面假定添加到 table 的 ID 的 PK 值。这个 PK 值很重要,因为 select top 1 必须只有 return 一行,否则查询将失败。所以这里的妙招是在 order by 子句中包含两列,以确保只有一行符合前 1 条标准。
我需要获取每组 upc 单元的第一个项目描述,我阅读了很多表格但对如何处理这个问题感到困惑,请帮助。
访问查询
SELECT ItemDescLookups.[Unit UPC Base Item], First(ItemDescLookups.[Item Description]) AS [Item Description]
FROM ItemDescLookups
GROUP BY ItemDescLookups.[Unit UPC Base Item];
我创造了SQL
SELECT TOP (100) PERCENT MIN(dbo.ItemDescLookups.[Item Description]) AS ItemDescription,
dbo.[Overpack Percentages].[Unit UPC Base Item]
FROM dbo.[Overpack Percentages] LEFT OUTER JOIN dbo.ItemDescLookups ON dbo.[Overpack Percentages].[Unit UPC Base Item] = dbo.ItemDescLookups.[Unit UPC Base Item]
GROUP BY dbo.[Overpack Percentages].[Unit UPC Base Item]
ORDER BY dbo.[Overpack Percentages].[Unit UPC Base Item]
原始数据
Unit UPC Base Item, Item Description
0001 1LB ASSTD CHOCOLATES
0001 454 g ASSTD CHOCOLATES
0001 1LB ASST CHOC DISPLAYER
0001 1LB ASST HALF PALLET
0001 1LB ASST CHOC PALLET
0001 1LB ASST CHOC DISPLR
0001 1 LB ASSORTED CHOCOLATES
0001 1LB WRAPPED ASSTD CHOCOLATES
0001 1 LB ASST. CHOC. POLE PACK
0001 454 g ASST CHOC DISPLR
0001 1lb PROMO AC W/FREE 2oz TRL BX
0001 1 LB ASSTD CHOCOLATES
0001 1LB ASSTD CHOCO W/FLAG WRAP
0001 1lb ASSTD CHOC SILVER LABEL
0001 1 LB ASST CHOC DISPLAYER
0001 1lb ASSTD CHOC GOLD LABEL
0001 1LB ASST PALLET
0001 60-RSC 1# AC (8630) POLE DSP
0001 12 OZ ASSTD CHOCOLATES
0002 2LB ASSTD CHOCOLATES
0002 908 g ASSTD CHOCOLATES
0002 2LB ASSTD CHOCOLATES FLOOR
0002 2 LB ASSORTED CHOCOLATES
0002 2LB ASSTD CHOCOLATES HALF PLT
0002 2# ASSORTED PALLET PACK
0002 2LB SAMPLER AST CHOC
0002 2LB ASSTD CHOC W/FLAG WRAP
0003 3LB ASSTD CHOCOLATES
0003 3 LB Asstd Chocolates
0003 3lb Assorted Chocolates
0003 3lb Asstd Chocolates Wrapped
0005 5LB ASSTD CHOCOLATES
0005 5 LB ASSTD CHOCOLATES
0005 2270 g ASSTD CHOCOLATES
预期结果
Unit UPC Base Item, Item Description
0001 1LB ASSTD CHOCOLATES
0002 2LB ASSTD CHOCOLATES
0003 3LB ASSTD CHOCOLATES
0005 5LB ASSTD CHOCOLATES
我从 SQL
得到的结果Unit UPC Item Item Description
0001 1 LB ASSORTED CHOCOLATES
0002 2 LB ASSORTED CHOCOLATES
0003 3 LB Asstd Chocolates
0005 2270 g ASSTD CHOCOLATES
您可以在 Access 和 SQL 服务器中使用以下内容:
SELECT Data1.Unit,
(select top 1 z.[Item Description] from data1 as z
where z.Unit = data1.Unit ORDER BY z.Unit, z.ID) AS myfirst
FROM Data1
GROUP BY Data1.Unit;
因为没有聚合词,所以我们不必在 group by 子句中包含描述。
请记住,上面假定添加到 table 的 ID 的 PK 值。这个 PK 值很重要,因为 select top 1 必须只有 return 一行,否则查询将失败。所以这里的妙招是在 order by 子句中包含两列,以确保只有一行符合前 1 条标准。