#sql #vba
#sql #vba
Вопрос:
Я использую Jet SQL из Excel, используя соединение ADODB с сервером IBM400, чтобы попытаться получить некоторые данные. Я уже делал это раньше, и это нормально для всех других команд JET SQL, однако я столкнулся с проблемой, которую я не могу решить. Это довольно просто, поэтому я полагаю, что я просто не ввожу правильный синтаксис, но то, что я пытаюсь сделать, это получить некоторые итоги.
У меня есть таблица, которая содержит номера деталей и количества в местоположениях этой детали (более одного местоположения на деталь). Моя цель состоит в том, чтобы команда sql получала общее количество (суммируя все местоположения) для каждой детали. Я могу успешно выполнять это по одной части за раз, используя: (для простоты я буду использовать номера деталей 12345678 и 01234567)
SELECT SUM(CPJDDTA81.F4101JD.LIPQOH) FROM CPJDDTA81.F4101JD WHERE CPJDDTA81.F4101JD.IMLITM = '12345678'
CPJDDTA81.F4101JD — это моя таблица, IMLITM — название столбца с номерами деталей, LIPQOH — количество в наличии для каждого местоположения.
Одиночный поиск выдает нужную мне сумму, однако проблема возникает при попытке запустить более одной суммы в одной команде sql. Я попытался использовать команду select iif следующим образом:
SELECT IIF(CPJDDTA81.F4101JD.IMLITM = '12345678',SUM(CPJDDTA81.F4101JD.LIPQOH),IIF(CPJDDTA81.F4101JD.IMLITM = '01234567',SUM(CPJDDTA81.F4101JD.LIPQOH),0) FROM CPJDDTA81.F4101JD
Эта команда выдает ошибку, в которой говорится, что «=» не является допустимым токеном (знак = в инструкции IIF). Я надеялся, что кто-нибудь может помочь мне написать правильное утверждение для достижения этой цели. Мой фактический список деталей будет намного больше, поэтому я буду использовать VBA для создания инструкции SQL, но сначала мне нужно научиться делать две части. Заранее спасибо.
Ответ №1:
SELECT CPJDDTA81.F4101JD.IMLITM, SUM(CPJDDTA81.F4101JD.LIPQOH) AS TotalQuantity
FROM CPJDDTA81.F4101JD
GROUP BY CPJDDTA81.F4101JD.IMLITM
Помогает ли вышеуказанное?
Кроме того, элементы могут быть ограничены путем добавления WHERE
предложения.
SELECT CPJDDTA81.F4101JD.IMLITM, SUM(CPJDDTA81.F4101JD.LIPQOH) AS TotalQuantity
FROM CPJDDTA81.F4101JD
WHERE CPJDDTA81.F4101JD.IMLITM IN ('12345678', '01234567')
GROUP BY CPJDDTA81.F4101JD.IMLITM
Комментарии:
1. Второе — это именно то, что я искал. Спасибо!