Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
amnesiac Member Откуда: Харьков Сообщений: 30 |
По сабжу: была задача реализовать хранимую процедуру для вывода поставленного товара, количество и суммы поставки (за январь и март). Задача в принципе решена, только проблема в том, что один и тот же товар поставлялся по разным ценам и следовательно один и тот же товар выводится несколько раз. Не подскажите как реализовать, чтобы товар выводился только один раз. DISTINCT не помогает
Вот результат моей процедуры [url=]https://dl.dropboxusercontent.com/u/90254390/12.png[/url] К сообщению приложен файл. Размер - 22Kb |
|
28 май 14, 13:39 [16085152] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Т.е. поля Количествоб Цена за единицу и Отсутствует имя столбца вам не нужны ? |
||
28 май 14, 13:42 [16085163] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
и какую из разных цен ты желаешь видеть в итоге? |
28 май 14, 13:42 [16085168] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
Цена за единицу в принципе не нужна. Нужны поля: код договора, название (один раз), количество и сумма поставки (я забыл просто имя присвоить) |
||||
28 май 14, 13:45 [16085193] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
И какое из 7ми разных Количеств должно быть показано для Bosh WAS 24440 ? |
||
28 май 14, 13:47 [16085201] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
их сумма. Например: Bosh WAS 24440 Количество: 234 штуки Общая стоимость: такая-то |
||||
28 май 14, 13:50 [16085234] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Если нужна сумма по полю, то почему тогда это поле указано еще и в GROUP BY ? |
||
28 май 14, 13:51 [16085253] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
да, действительно. Исправил, но все равно поле количество не суммируется К сообщению приложен файл. Размер - 19Kb |
||||
28 май 14, 14:00 [16085327] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что опять присутствует поле, которое разное для разных записей. Неужели непонятно ? |
||
28 май 14, 14:01 [16085340] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
amnesiac, ??? SELECT Договоры.код_договора, Продукция.название_продукции, SUM(Поставленная_продукция.количество) AS Количество, SUM(количество*цена_за_единицу) FROM Договоры INNER JOIN Продукция ON Продукция.название_продукции=[Продукция].[название_продукции] INNER JOIN Поставленная_продукция ON Поставленная_продукция.количество =[Поставленная_продукция].[количество] WHERE (дата_поставки BETWEEN @var1 AND @var2 OR дата_поставки BETWEEN @var3 AND @var4) AND (цена_за_единицу BETWEEN 20 AND 2000) GROUP BY Договоры.код_договора, Продукция.название_продукции |
28 май 14, 14:05 [16085370] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
эммм..нужно убрать вывод поля "цена за единицу"? Если вы это имели ввиду, то тот же результат..или я не о том думаю...натолкните на мысль пожалуйста .. |
||||
28 май 14, 14:07 [16085389] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Мля. Потому что ненужные поля нужно убирать из всех мест запроса |
||
28 май 14, 14:09 [16085410] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
да-да..затупил...спасибо большое Но все же проблема с выводом товара осталась. Опять же один и тот же товар много раз выводится.. К сообщению приложен файл. Размер - 20Kb |
||||
28 май 14, 14:12 [16085437] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что кто-то продолжает тупить |
||
28 май 14, 14:14 [16085448] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
что-то вы меня вообще в тупик завели( |
||||
28 май 14, 14:30 [16085564] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что 3ий раз спрашивать одно и тоже - это уже клиника Поля в запросе уже скоро закончатся. |
||
28 май 14, 14:32 [16085572] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
amnesiac,SELECT Договоры.код_договора, Продукция.название_продукции from Таблица GROUP BY Договоры.код_договора, Продукция.название_продукцииравняется SELECT distinct Договоры.код_договора, Продукция.название_продукции from Таблица В группе нет повторяющихся значений. На Вашей картинке это наглядно показано. Попробуйте так: SELECT Договоры.код_договора, SUM(Поставленная_продукция.количество) AS Количество, SUM(количество*цена_за_единицу) FROM Договоры INNER JOIN Продукция ON Продукция.название_продукции=[Продукция].[название_продукции] INNER JOIN Поставленная_продукция ON Поставленная_продукция.количество =[Поставленная_продукция].[количество] WHERE (дата_поставки BETWEEN @var1 AND @var2 OR дата_поставки BETWEEN @var3 AND @var4) AND (цена_за_единицу BETWEEN 20 AND 2000) GROUP BY Договоры.код_договора |
28 май 14, 14:34 [16085590] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Есть. На втором скриншоте |
||
28 май 14, 14:36 [16085596] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
Glory, ОК, я просто не так выразился... |
28 май 14, 14:39 [16085622] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
так то оно так, но нет вывода названия. Нужно именно название товара |
||
28 май 14, 15:25 [16086073] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
amnesiac, тогда выведем его ![]() SELECT Продукция.название_продукции, SUM(Поставленная_продукция.количество) AS Количество, SUM(количество*цена_за_единицу) FROM Договоры INNER JOIN Продукция ON Продукция.название_продукции=[Продукция].[название_продукции] INNER JOIN Поставленная_продукция ON Поставленная_продукция.количество =[Поставленная_продукция].[количество] WHERE (дата_поставки BETWEEN @var1 AND @var2 OR дата_поставки BETWEEN @var3 AND @var4) AND (цена_за_единицу BETWEEN 20 AND 2000) GROUP BY Продукция.название_продукции |
28 май 14, 15:31 [16086122] Ответить | Цитировать Сообщить модератору |
amnesiac Member Откуда: Харьков Сообщений: 30 |
видимо я на жаре перегрелся))) настолько все просто огромное спасибо! Пойду дальше мучать t-sql) |
||
28 май 14, 15:42 [16086207] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |