SQL Разделить поле, если - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать запрос, чтобы получить минимальный запас X компонентов из статьи. Представьте себе компьютер, на котором есть оперативная память, материнская плата и т. Д. Я могу легко получить минимальное количество компонентов, однако мы обычно помещаем 2 ОЗУ в компьютер, который мы хотим построить, поэтому я хочу, чтобы запрос получил StockValue ОЗУ. /2.

Вот мой запрос:

SELECT A1.Artigo AS Artigo,
       A1.Descricao AS Descricao,
       MIN(AA.StkActual) AS Stock,
       0 AS QuantidadeEmEncomendasPendentes,
       'Componente Stock' AS Id
FROM Artigo A1
     INNER JOIN ComponentesArtigos CA ON CA.ArtigoComposto = A1.Artigo
     INNER JOIN Artigo A2 ON A2.Artigo = CA.Componente
                         AND (A2.Familia = 98
                           OR A2.Familia = 45
                           OR A2.Familia = 39
                           OR A2.Familia = 37
                           OR A2.Familia = 38)
     INNER JOIN ArtigoArmazem AA ON AA.Artigo = A2.Artigo
                                AND AA.Armazem = 'A7'
GROUP BY A1.Artigo,
         A1.Descricao
HAVING A1.Artigo = '0180005132';

Вещи, которые вам нужно знать: min (AA.StkActual) - это StockValue, о котором я говорю. Объем оперативной памяти определяется семейством (A2.Familia = 39)

Я не хочу делить результат запроса на 2, я хочу разделить запас компонента / статьи, семейство которого = 39, на2

1 Ответ

1 голос
/ 07 ноября 2019

Если я правильно понимаю, вы хотите условный минимум:

SELECT A1.Artigo AS Artigo,
       A1.Descricao AS Descricao,
       MIN(CASE WHEN A2.familia = 38 THEN AA.StkActual / 2 ELSE AA.StkActual END) AS Stock,
       0 AS QuantidadeEmEncomendasPendentes,
       'Componente Stock' AS Id
. . .
...