этот запрос возвращает 125000 итог для [Specimen ID]
Почему эти два запроса возвращают разные значения?
; with cte (rejected) as
(
select distinct([specimen id])
from QuickLabDump
where DATEPART(mm, [DATE entered]) = 01
and DATEPART(yyyy, [DATE entered]) = 2012
and QuickLabDump.Outcome='REJECTED'
)
select [Specimen ID],max([Order Count]) from QuickLabDump
left outer join cte
on QuickLabDump.[Specimen ID]=cte.rejected
where DATEPART(mm, [DATE entered]) = 01
and DATEPART(yyyy, [DATE entered]) = 2012
and cte.rejected is null
group by [Specimen ID]
order by 2 desc
а если я сделать то же самое количество на Specimen ID
здесь, я получаю около 127000:
; with cte (rejected) as
(
select distinct([specimen id])
from QuickLabDump
where DATEPART(mm, [DATE entered]) = 01
and DATEPART(yyyy, [DATE entered]) = 2012
and QuickLabDump.Outcome='REJECTED'
)
select
[Full Date]=CONVERT(VARCHAR(8), [DATE entered], 1),
[Year Entered]=DATEPART(yy, [DATE entered]) ,
[Month Entered]=LEFT(DATENAME(MONTH, [DATE entered]), 3),
[Day Entered]=DATEPART(dd, [DATE entered]),
[DOW]=
case when DATEPART(WEEKDAY, [DATE entered])=1 THEN 'Sun'
when DATEPART(WEEKDAY, [DATE entered])=2 THEN 'Mon'
when DATEPART(WEEKDAY, [DATE entered])=3 THEN 'Tus'
when DATEPART(WEEKDAY, [DATE entered])=4 THEN 'Wed'
when DATEPART(WEEKDAY, [DATE entered])=5 THEN 'Thu'
when DATEPART(WEEKDAY, [DATE entered])=6 THEN 'Fri'
when DATEPART(WEEKDAY, [DATE entered])=7 THEN 'Sat'
end,
[Week Ending]=CONVERT(VARCHAR(8),
DATEADD (D, -1 * DatePart (dw,[date entered]) + 6, [date entered]), 1),
[CountAccns]=count(a.[specimen id]),
[Sales Rep]=c.salesrep,
[MLNPI]=c.npi,
[IMSNPI]=e.npib,
[IMS Specialty Primary Code]=e.SpecialtyPrimaryCodeb,
[IMS Specialty Secondary Code]=e.SpecialtySecondaryCodeb,
[IMS Specialty Tertiary Code]=e.SpecialtyTertiaryCodeb,
[IMS Professional ID 1]=e.ProfessionalID1b,
[Physician]=[Requesting Physician],
[Practice Code]=a.[practice code],
[MLIS Code]=b.[mlis practice id],
[practice name],
[Date Established]=c.dateestablished ,
[Address]=c.practiceaddress1,
[Address2]=c.practiceaddress2,
[City]=c.practicecity,
[State]=c.practicestate,
[Status]=b.[Active Inactive],
[order count]=a.[order count]
from
quicklabdump a
left outer join qlmlismapping b on (b.[practice code] = a.[practice code])
left outer join PracticeandPhysician c on
a.[Requesting Physician]=c.doctorfirstname+' '+c.DOCTORLASTNAME
and a.[practice code]=c.practicecode
left outer join IMSData e on c.NPI=e.npib
left outer join cte
on a.[Specimen ID]=cte.rejected
where
DATEPART(mm, [DATE entered]) = 01
and DATEPART(yyyy, [DATE entered]) = 2012
and cte.rejected is null
group by
a.[DATE entered],
c.salesrep,
c.npi,
e.npib,
e.SpecialtyPrimaryCodeb,
e.SpecialtySecondaryCodeb,
e.SpecialtyTertiaryCodeb,
e.ProfessionalID1b,
a.[Requesting Physician],
a.[practice code],
b.[mlis practice id],
[practice name],
c.dateestablished ,
c.practiceaddress1,
c.practiceaddress2,
c.practicecity,
c.practicestate,
b.[Active Inactive],
a.[order count]
having a.[order count]=max([order count])
order by [Practice Code] desc,Physician desc
почему существует такая огромная разница с графом ? разве вы не думаете, что это будет точно так же, поскольку оба запроса должны возвращать одинаковое общее количество Specimen IDs
?
что я делаю неправильно?
Большое вам спасибо за ваш ответ! не могли бы вы рассказать мне, почему группировка по другим атрибутам меняет результат? –
да есть дополнительные объединения, но все они ЛЕВЫЕ ВНЕШНИЕ СОЕДИНЕНИЯ и просто возвращают NULL, если нет данных –
первый запрос выбирает идентификатор образца и max ([Order Count]), предложение having во втором запросе делает то же самое не так ли? - Еще раз спасибо за ваш вклад и помогите –