Sql server 2012 SQL Server使用单个查询中不同表的计数返回多个值
我在SQL Server 2012数据库中有不同的表,其结构如下:Sql server 2012 SQL Server使用单个查询中不同表的计数返回多个值,sql-server-2012,Sql Server 2012,我在SQL Server 2012数据库中有不同的表,其结构如下: userstbl有用户全名和ID-->这有牙医的信息 bookingblhas Id,patient\u Id(与另一个表相关,包含患者的信息文件),booking\u date,InvoiceID(与另一个表发票相关) servicetbl:ID、service\u ID(与另一个具有服务成本的表相关)、booking\u ID invoicetbl:标识,总成本 我想从我的过程中得到的是返回: 用户ID为DrD,全名为D
有用户全名和ID-->这有牙医的信息userstbl
has Id,patient\u Id(与另一个表相关,包含患者的信息文件),booking\u date,InvoiceID(与另一个表发票相关)bookingbl
:ID、service\u ID(与另一个具有服务成本的表相关)、booking\u IDservicetbl
:标识,总成本invoicetbl
create Proc SelectDrWork(@date Date)
as
begin
select
userstbl.[user_id],userstbl.full_name,
count(bookingtbl.bookingID),
count(servicetbl.serviceID),
sum(invoice.Total)
from
userstbl, bookingtbl, Servicetbl, invoice
where
userstbl.IsActivated = 'True'
and userstbl.description = 'Dr'
and bookingtbl.dr_id = [user_id]
and cast(bookingtbl.[date] as date) = cast(@date as date)
and servicetbl.booking_id = book_number
and invoice.inv_id = bookingtbl.invoiceID
group by
[user_id], book_number, diaganosis_serv_id
end
我找到了答案。非常简单:
ALTER Proc SelectDrWork(@date Date)
as
begin
select userstbl.[user_id],userstbl.full_name,count(distinct book_number) as BookingCount,count(service_id)as ServiceCount,sum(invoice.Total) as Total
from userstbl, bookingtbl, diaganosistbl, invoice
where userstbl.IsActivated='True' and userstbl.description='Dr'
and bookingtbl.dr_id=[user_id]
and cast(bookingtbl.[date] as date)= cast(@date as date)
and diaganosistbl.booking_id=book_number
and invoice.inv_id=bookingtbl.invoiceID
group by [user_id],full_name
end
-在ANSI-92 SQL标准(20多年前)中,旧式的逗号分隔的表列表样式被正确的ANSI
JOIN
语法所取代,并且它的使用非常简单discouraged@marc_s谢谢你的建议。我在这个领域还是新手,我正在努力提高我的技能。