Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
Прописал следующий запрос:
select s.id, s.skucode, s.name, sum(l.units)
from sku s
left join loads l on l.sku_id = s.id
where s.skucode not like '%z%'
and l.real_loc_id >= 1
and l.status = 'A'
and warehouse_id = 0
group by s.id,
s.skucode,
s.name
Выдает след. инфо:
s.ID s.skucode s.name sum(l.units)
1 534 210w760 Имя 1 6614
2 551 211w320 Имя 2 150
Нужно что бы были еще нулевые значения если в таблице Loads значения s.id из таблицы sku отсутствуют.
Полистав информацию ничего не понял.
5 июн 18, 12:04    [21469231]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
ZummeP,
убрать в предикат LEFT JOIN
and l.real_loc_id >= 1
and l.status = 'A'
5 июн 18, 12:10    [21469254]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
TaPaK,

Мне немного не понятно, по этому перезадам свой вопрос следующим образом.
Мне нужно чтобы в столбце sum(l.units) было 0 если значений S.id в таблице Loads нет
5 июн 18, 12:23    [21469305]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
ZummeP,

SUM(ISNULL(l.units,0))
5 июн 18, 12:25    [21469309]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
TaPaK,

это я пробывал не подходит программа не знает данную функция SQL Developer
Version 6.0.0.840
5 июн 18, 12:26    [21469315]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
ZummeP
TaPaK,

это я пробывал не подходит программа не знает данную функция SQL Developer
Version 6.0.0.840


омг... NVL() и идите в правильную ветку
5 июн 18, 12:28    [21469324]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
ZummeP
TaPaK,

Мне немного не понятно, по этому перезадам свой вопрос следующим образом.
Мне нужно чтобы в столбце sum(l.units) было 0 если значений S.id в таблице Loads нет
Для S.id, которых нет, Вы, однако, в WHERE требуете
and l.real_loc_id >= 1
and l.status = 'A'
Поэтому этих записей в результате SELECTа вообще не будет.
Так что сначала сделайте так, как Вам посоветовал TaPaK двумя постами выше.
5 июн 18, 12:31    [21469341]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
TaPaK
омг... NVL() и идите в правильную ветку
COALESCE. И пусть спрашивает, где удобно...
5 июн 18, 13:21    [21469524]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Щукина Анна
TaPaK
омг... NVL() и идите в правильную ветку
COALESCE. И пусть спрашивает, где удобно...

для вас и туалеты наверное не М/Ж а стоя и сидя
5 июн 18, 13:31    [21469559]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
Всю голову сломал ничего, не получается.
Он мне попросту не выдает значения ноль так как нет записей во второй таблице
5 июн 18, 14:12    [21469714]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
ZummeP
Всю голову сломал ничего, не получается.
Он мне попросту не выдает значения ноль так как нет записей во второй таблице
1. До вас дошло, что вы про Oracle спрашиваете на форуме по MS SQL?
2. Не получается перенести условия из WHERE в ON LEFT JOINа, как вам советовали?
5 июн 18, 14:18    [21469738]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
iap,

То что не там спрашиваю я это понял,
и условия не получается перевести что то не так прописываю
5 июн 18, 14:20    [21469742]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
ZummeP,

и какой запрос получился?
5 июн 18, 14:23    [21469750]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
ZummeP,

select s.id, s.skucode, s.name, coalesce(sum(l.units),0)
  from sku s
  left join loads l on l.sku_id = s.id
                   and l.real_loc_id >= 1
                   and l.status = 'A'
 where s.skucode not like '%z%'
and warehouse_id = 0--Если это относится к loads - тоже надо перекинуть в джоин
group by s.id,
s.skucode,
s.name
5 июн 18, 14:27    [21469768]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
ZummeP
iap,

То что не там спрашиваю я это понял,
и условия не получается перевести что то не так прописываю

select s.id, s.skucode, s.name, sum(nvl(l.units,0))
from sku s
left join loads l on l.sku_id = s.id and l.real_loc_id >= 1 and l.status = 'A'
where s.skucode not like '%z%'
and warehouse_id = 0
group by s.id,
s.skucode,
s.name
Если warehouse_id тоже в таблице loads, то и and warehouse_id = 0 тоже в ON перенести
5 июн 18, 14:27    [21469770]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
ZummeP,

кстати, надо ВСЕГДА писать алиас таблицы (для ясности и сокращения количества ошибок)
5 июн 18, 14:29    [21469775]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
Спасибо всем за помощь, но в итоге сделал все через макрос в Excel.
Но есть одно, в полученной таблице у меня есть единицы измерения (ЕИ) "UNIT", "UPAK" и "КГ" так же в соседней колонке есть "вес нетто"
Мне нужно чтобы в колонке кол-во при условии что ЕИ UPAK и КГ был вес нетто умноженный на кол-во.
Это то что я написал в макросе:
"select sku.id,sku.skucode,sku.name,sum(nvl(v_rs2_current_stock13d.qty,0)) qty,sku.uom,sku.weight_netto " & _
"from sku left join v_rs2_current_stock13d on v_rs2_current_stock13d.sku_id=sku.id and nvl(v_rs2_current_stock13d.warehouse_id, 100) not in (1, 2) " & _
"where nvl(v_rs2_current_stock13d.warehouse_id, 100) not in (1, 2) and sku.id>0 and ((upper(SUBSTR(trim(sku.skucode),4,1)) like '%W%' " & _
"or upper(SUBSTR(trim(sku.skucode),4,1)) like '%V%' " & _
"or upper(SUBSTR(trim(sku.skucode),4,1)) like '%R%' " & _
"and SUBSTR(sku.skucode,8,1) is null) or v_rs2_current_stock13d.qty>0) " & _
"group by sku.id,sku.skucode,sku.name,sku.uom,sku.weight_netto order by skucode;"
Получилось:
SKU Артикул Наименование товара кол-во ЕИ Вес нетто
133128 *w* Печенье 44 upak 5
Если кто то знает как это можно сделать то напишите пожалуйста пример если нет то будем выходит с помощь формул. и в дальнейшем через фильтрацию
6 июн 18, 08:30    [21471569]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
ZummeP,

Excel,конечно, MS
но не MS SQL.
6 июн 18, 08:36    [21471578]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
А возможно ли это сделать оператором CASE
6 июн 18, 09:00    [21471621]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
ZummeP,

конечно
6 июн 18, 09:03    [21471623]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
ZummeP
Member

Откуда:
Сообщений: 28
Посетитель,

не могли пример написать а то что то пока не могу разобраться по инфо в инете?
6 июн 18, 09:15    [21471656]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
ZummeP,

пример оператора case?
легко

case when x=y and z>5 then a*b else c end
6 июн 18, 10:43    [21471876]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Alibek B.
Member

Откуда:
Сообщений: 3517
TaPaK
SUM(ISNULL(l.units,0))

Правильнее isnull(sum), а не sum(isnull).
6 июн 18, 10:51    [21471906]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Alibek B.
TaPaK
SUM(ISNULL(l.units,0))

Правильнее isnull(sum), а не sum(isnull).

какие ваши смешные доказательства этого бреда?
6 июн 18, 11:06    [21471956]     Ответить | Цитировать Сообщить модератору
 Re: Подставить значение 0 если нет данных во второй таблице  [new]
Alibek B.
Member

Откуда:
Сообщений: 3517
Отключенные мозги — вот это смешно.
А указанная рекомендация — это логично.
6 июн 18, 11:38    [21472065]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить