我有下一个查询计算我的具体值,查询结果并不完美,我看到了几个" MIR_id"具有相同ID但却看不到它们的总数(我也想要) 我尝试添加更多Count" With"但它混淆了一切。 任何想法我该如何解决?
SELECT distinct
request_id
,(substring(VwDurationIndicator.RequestDetails,5,6)) as Mir_ID
,request_type
,count(vpo_number) as Number_of_source
FROM vortex_hvc.dbo.VwDurationIndicator
left join vw_public_request_material_location_mir on (substring(VwDurationIndicator.RequestDetails,5,6)) like vw_public_request_material_location_mir.material_request_id
where ( DateDiff(hh,CreatedTime, getdate()) < 6)
and request_type like 'MIR' AND SITE LIKE 'HVC'
GROUP BY VPO_NUMBER,(substring(VwDurationIndicator.RequestDetails,5,6)),request_id,CreatedTime,AssignTime,ClosedTime,request_type,Product,site
查询结果:
request_id Mir_ID Number_of_source
152466 334974 0
152467 334979 1
152472 334985 0
152473 334986 0
152475 334994 0
152534 335046 0
152540 335064 1
152540 335064 3
152540 335064 4
152543 335071 0
152546 335075 1
152549 335078 1
152549 335078 2
152549 335078 3
152549 335078 4
152549 335078 6
答案 0 :(得分:0)
select distinct
几乎不需要 group by
。您应该仅通过select
中的未聚合列聚合(通常)。所以:
select request_id,
substring(di.RequestDetails, 5, 6)) as Mir_ID
request_type,
count(vpo_number) as Number_of_source
from vortex_hvc.dbo.VwDurationIndicator di left join
vw_public_request_material_location_mir rml
on substring(di.RequestDetails, 5, 6)) = rml.material_request_id
where DateDiff(hour, CreatedTime, getdate()) < 6 and
request_type = 'MIR' and SITE = 'HVC'
group by request_id,
substring(di.RequestDetails, 5, 6)) as Mir_ID
request_type;
注意:
group by
只有非聚合列。select distinct
不再需要。like
替换为=
。您应该使用=
,除非您真的想要处理通配符。