MS Access запрос, чтобы убедиться, что более высокие розничные продажи соответствуют - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь создать запрос в MS Access, и у меня возникла проблема с поиском наилучшего способа его создания.То, что я пытаюсь сделать, - это убедиться, что все розничные магазины высшего уровня совпадают в наборе соответствующих номеров упаковок.Например:

PackNum  Prefix    Retail
6451618  DF        37.99
6451618  SK        37.99
6451618  VJ        34.99
6451618  SG        37.99

Одна из групп отключена, и я хочу, чтобы запрос показал ее.Я пытался использовать что-то вроде этого, чтобы проверить, но я не получаю результаты, которые я ищу

 IIf([dbo_PIC704Current]![PackNum]=[dbo_PIC704Current]![PackNum] 
 And [dbo_PIC704Current]![Ret2]<>[dbo_PIC704Current]![Ret2],True,False)

Любая помощь или толчок в правильном направлении будет принята с благодарностью!-Deke

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Ваше существующее решение, использующее агрегирование, вероятно, даст лучшую производительность, но, чтобы предложить альтернативу, вот пример, использующий коррелированный подзапрос:

select 
    pc.packnum, pc.ret2, ci.mediaid, pc.discountreasoncode, ci.brand
from 
    dbo_pic704current pc inner join dbo_cataloginfo ci on 
    pc.year = ci.mailyear and pc.catid = ci.catalog
where 
    ci.mediaid = 'cat catalog' and exists 
    (select 1 from dbo_pic704current t where t.packnum = pc.packnum and t.ret2 > pc.ret2)
order by 
    pc.packnum
0 голосов
/ 01 марта 2019
 SELECT dbo_pic704current.packnum
, Min(dbo_pic704current.Ret2) AS LowRet2
, Max(dbo_pic704current.Ret2) AS HighRet2
, dbo_CatalogInfo.MediaId
, dbo_pic704current.DiscountReasonCode
, dbo_CatalogInfo.Brand
FROM dbo_pic704current INNER JOIN dbo_CatalogInfo ON (dbo_pic704current.year = 
dbo_CatalogInfo.mailyear) AND (dbo_pic704current.catid = dbo_CatalogInfo.catalog)
WHERE (((dbo_CatalogInfo.MediaId)='CAT Catalog'))
GROUP BY dbo_pic704current.packnum, dbo_CatalogInfo.MediaId, 
dbo_pic704current.DiscountReasonCode, dbo_CatalogInfo.Brand, dbo_pic704current.Year
HAVING (((Min(dbo_pic704current.Ret2))<>Max([Ret2])))
ORDER BY dbo_pic704current.packnum;
...