Fahid Zahoor Ответов: 1

Как я могу вернуть ноль, если в SQL нет совпадения записей


Привет!!!!!
я пытаюсь получить максимальный идентификатор, где название продукта - "ноутбук"
если он найдет идентификатор в соответствии с названием продукта, то он вернет идентификатор
но я хочу, чтобы если ID не найден в соответствии с названием продукта, то sql вернет ноль
пожалуйста, кто-нибудь скажите мне, как я могу это сделать.
Я использую код но может быть он не в порядке

Что я уже пробовал:

ALTER PROCEDURE [dbo].[USP_Select_Current_PurchaseItem_QtyPurRate_BAseOnItemName]
(
@ItemName		nvarchar(50)
)
AS
BEGIN
	SELECT      
     max(isnull,([Id]),0) as 'CurrentlyaddeItemId'
   
  FROM [dbo].[Purchasing_Items_Hist]
  where Itemtype=@ItemName
END

Fahid Zahoor

как мы можем сделать то же самое, но используя (Sum) не Max
я использую это, но он не возвращает ноль, если нет доступного кол-во в соответствии с productID beacuse нет никакого запаса добавить в этом productId. пожалуйста, скажите мне, как я могу это сделать.
availableQty имеет тип данных int
выбирать
COALESCE(sum([AvailableQty]),0) as 'Avil'
от [dbo].[Склад]
группы [Кодтовара]
имея [ProductID]= '2'

1 Ответов

Рейтинг:
6

ZurdoDev

У вас есть правильная идея, просто неправильный синтаксис. И вместо функции isnull я считаю, вы должны использовать сливаются.

Вы хотите знать, когда MAX(id) равен null. Сделать это:

SELECT      
     COALESCE(max([Id]), 0) as 'CurrentlyaddeItemId'
   
  FROM [dbo].[Purchasing_Items_Hist]
  where Itemtype=@ItemName


Fahid Zahoor

Спасибо вы решаете мою пароблему

Fahid Zahoor

как мы можем сделать то же самое, но используя (Sum) не Max
я использую это, но он не возвращает ноль, если нет доступного кол-во найти
выбирать
COALESCE(sum([AvailableQty]),0) as 'Avil'
от [dbo].[Склад]
группы [Кодтовара]
имея [ProductID]= '2'

ZurdoDev

Из-за группировки вы не получаете никаких записей обратно, так что этот подход не будет работать. Сначала вам нужно будет проверить, существует ли функция exists ().