如果不存在SQL,查找值显示为零

时间:2018-02-06 11:27:55

标签: sql sql-server sql-server-2008

我有以下数据:

SerivceID   Service_Name            Serivce_Charges     FK_VendorID FK_ExpertID FK_CustomerID   BookingDate TimeSlot    current_Job GettingJobDate
4           Furniture & Home Decor  200                 1                2      1               08-11-2017  3              1         2018-02-04 13:57:49.733

连续。现在我想知道哪个查询是:

select A_Services.Service_Name as [Service Name],count(Service_Name) as [Total Serve] 
from A_Services where FK_ExpertID = 2 group by Service_Name order by [Service Name]

显示数据:

Service Name            Total Serve
Furniture & Home Decor  1

我想获取数据:

Service Name            Total Serve
Furniture & Home Decor  1
Car Towing              0

1 个答案:

答案 0 :(得分:1)

您当前的数据不可能。

" Car Towing"应该来自某个地方,计算机没有预先设定的服务名称。怎么知道它是否以" Towing"或者"投掷"或"拖曳"?

您需要在某处指定。

(您可以选择自己拥有的内容,但无法显示您不具备的数据)

解决方案:

可以将同一服务连接到不同的供应商或专家或客户吗?

如果是,我建议您创建服务类型类别。 (同名,姓名)

Id   Name
1    Furniture & Home Decor 
2    Car Towing          
3    Car Painting
4    Etc...

/*Name should be Unique*/

然后您可以使用 ServiceType_FK

而不是 Service_Name

使用该数据,您可以查询:

SELECT ST.Name AS [Service Name], COUNT(S.ServiceType_FK) AS [Total Serve] 
FROM ServiceType ST
LEFT JOIN A_Services S
ON S.ServiceType_FK = ST.Id
--WHERE S.FK_ExpertID = 2
GROUP BY ST.Name

返回你想要的东西。