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

Posted

技术标签:

【中文标题】如果不存在,则查找值显示为零 SQL【英文标题】:find value show zero if not exist 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

【问题讨论】:

修正格式。当我尝试编辑问题时,我无法这样做。 所以,如果汽车拖车不在您的餐桌上,您还想展示它吗?那么包含所有名称的基表是什么? 【参考方案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

返回你想要的。

【讨论】:

以上是关于如果不存在,则查找值显示为零 SQL的主要内容,如果未能解决你的问题,请参考以下文章

如果列表sql server中不存在数据,则返回值

SQL:如果存在,则限制用户。如果不存在,则显示所有内容

mysql查找字段在一个集合里存不存在

根据某些 col1 值查找 col2 值,如果不存在,则使用 pandas 保持最近的值

t-sql 如果记录存在则选择一列,如果不存在则选择不同的列

MySQL:如果值存在,则对行进行更新,如果值不存在,则插入 [重复]