【问题标题】:find value show zero if not exist SQL如果不存在,则查找值显示为零 SQL
【发布时间】:2018-02-06 11:27:55
【问题描述】:

我有如下数据:

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

【问题讨论】:

  • 修正格式。当我尝试编辑问题时,我无法这样做。
  • 所以,如果汽车拖车不在您的餐桌上,您还想展示它吗?那么包含所有名称的基表是什么?

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


【解决方案1】:

以您当前的数据不可能。

“拖车”应该来自某个地方,计算机没有预设服务名称。它怎么知道它是否以“拖曳”或“投掷”或“拖曳”结尾?

您需要指定某处。

(您可以选择您拥有的数据,但不能显示您没有的数据)


解决方案:

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

如果是,我建议您创建一个服务类型类别。 (ID、姓名)

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

返回你想要的。

【讨论】:

    猜你喜欢
    • 2019-02-17
    • 1970-01-01
    • 2021-11-13
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多