Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Условия в SQL запросе  [new]
GLeBaTi
Member

Откуда:
Сообщений: 22
Здравствуйте. Есть запрос:
SELECT us.Name, us.Platform, us.Language, le.Date, le.ValueIMP, le.ProductTypeName, si.Name AS ShopItem, pack.Name AS Package
FROM LogEntries le 
  LEFt JOIN Users us ON us.Id = le.UserId
  LEFt JOIN dbo.ShopItems si ON si.Id = le.ProductId
  LEFt JOIN dbo.Packages pack ON pack.Id = le.ProductId
WHERE (le.Type = 0 OR le.Type = 1 OR le.Type = 4 )


Результат:
Картинка с другого сайта.

Вопрос:
Как сделать так, что если ProductTypeName = ShopItem, то значение в столбце Package = Null?
23 дек 16, 11:03    [20040445]     Ответить | Цитировать Сообщить модератору
 Re: Условия в SQL запросе  [new]
iap
Member

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

CASE?
23 дек 16, 11:07    [20040484]     Ответить | Цитировать Сообщить модератору
 Re: Условия в SQL запросе  [new]
GLeBaTi
Member

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

CASE?

Можно примером, я в sql не силен. Не знаю как этот CASE совместить с моим WHERE
23 дек 16, 11:13    [20040534]     Ответить | Цитировать Сообщить модератору
 Re: Условия в SQL запросе  [new]
TaPaK
Member

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

в WHERE и не надов, в SELECT CASE WHEN ProductTypeName = ShopItem THEN NULL ELSE Package END as Package
23 дек 16, 11:14    [20040540]     Ответить | Цитировать Сообщить модератору
 Re: Условия в SQL запросе  [new]
GLeBaTi
Member

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

в WHERE и не надов, в SELECT CASE WHEN ProductTypeName = ShopItem THEN NULL ELSE Package END as Package


Не хочет почему-то :)
Картинка с другого сайта.
23 дек 16, 11:24    [20040596]     Ответить | Цитировать Сообщить модератору
 Re: Условия в SQL запросе  [new]
TaPaK
Member

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

дык зпт нд
23 дек 16, 11:26    [20040612]     Ответить | Цитировать Сообщить модератору
 Re: Условия в SQL запросе  [new]
GLeBaTi
Member

Откуда:
Сообщений: 22
TaPaK, Спасибо! :)

Полное решение:
SELECT us.Name, us.Platform, us.Language, le.Date, le.ValueIMP, le.ProductTypeName, 
  CASE WHEN ProductTypeName <> 'ShopItem' THEN NULL ELSE si.Name END as ShopItem,
  CASE WHEN ProductTypeName <> 'Package' THEN NULL ELSE pack.Name END as Package
FROM LogEntries le 
  LEFt JOIN Users us ON us.Id = le.UserId
  LEFt JOIN dbo.ShopItems si ON si.Id = le.ProductId
  LEFt JOIN dbo.Packages pack ON pack.Id = le.ProductId
WHERE (le.Type = 0 OR le.Type = 1 OR le.Type = 4 )


Результат:
Картинка с другого сайта.
23 дек 16, 11:31    [20040636]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить