Использование нескольких столбцов для определения результатов SUM - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблемы с получением следующей суммы.У меня есть таблица предметов, которая показывает местоположение, код товара и код размера.Уникальной особенностью этой таблицы является наличие флага, который определяет, будет ли место содержать конкретный предмет.У меня есть еще одна таблица, которая показывает движение запасов товаров.Эта таблица также показывает местоположение, предмет, размер и положительную или отрицательную запись.Сумма положительных / отрицательных записей дает текущий запас товара.

То, что я не могу сделать, это сказать, СУММА количества движения запаса, где элемент и размер помечены как "местоположение может складировать этот элемент"

Первый оператор выбора возвращает элементы, которые можно хранить по местоположению

select
S.[Location Code],S.[Item No_],S.[size],
from [Stockkeeping Units] S
where [Range in Location] = 1

Результаты возвращают список в виде:

location Code| Item no | Size
     1       | SHIRT1  |  s
     1       | SHIRT1  |  m
     1       | SHIRT2  |  s
     1       | SHIRT2  |  m
     2       | SHIRT1  |  s
     2       | SHIRT2  |  m

Второй оператор выбора возвращаеттекущий запас товара по местоположению

select 
L.[Location Code],L.[Item No_],L.[size],
sum(L.[Quantity]) as Quantity 
from [Item Ledger Entry] L

location Code| Item no | Size | Quantity
     1       | SHIRT1  |  s   |   5
     1       | SHIRT1  |  m   |   3
     1       | SHIRT2  |  s   |   5
     1       | SHIRT2  |  m   |   7
     2       | SHIRT1  |  s   |   3
     2       | SHIRT2  |  m   |   0

Когда я пытаюсь объединить эти таблицы, чтобы вернуть комбинацию первых двух операторов выбора, он сбивается с пути

select  L.[Location Code],L.[Item No_], L.[Variant Code],
sum(L.[Quantity]) as Quantity 
from [$Item Ledger Entry] L
join [Stockkeeping Unit] on [Item Ledger Entry].[Item No] = [Stockkeeping 
Unit].[Item No_]
where  [Stockkeeping Unit].[Range in Location] = 1
group by L.[Location Code],L.[Item No_],L.[Variant Code]

Я хотел бы видеть следующее:

location|item no|size|quantity where range in location is yes

Объединенный запрос возвращает результат, игнорируя [Единица учета запасов]. [Диапазон в местоположении] = 1 запрос

Присоединенныйзапрос также не возвращает те же результаты SUM, что и второй запрос SELECT

1 Ответ

0 голосов
/ 25 апреля 2018

Похоже, вы имели в виду это:

SELECT [Location Code], [Item No_], [size], SUM([Quantity]) AS Quantity
FROM [Item Ledger Entry] L
WHERE EXISTS (
             SELECT *
             FROM [Stockkeeping Units] S
             WHERE S.[Range in Location]=1
               AND S.[Location code]=L.[Location code]
               AND S.[Item No]=L.[Item no]
               AND S.[Size]=L.[Size]
             )
GROUP BY L.[Location Code], L.[Item No_], L.[size];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...