Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
VovaZZ
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 12
1

Запрос остатков лекарств по отделениям

12.04.2017, 09:47. Просмотров 794. Ответов 14
Метки нет (Все метки)

Добрый день. У меня есть два представления Приход(Название_отделения, название_лекарства, количество) и Расход(Название_отделения, название_лекарства, количество) и я хочу создать запрос с колонками: Название_отделения, название_лекарства, Остаток. Где Остаток это Приход.Количество-Расход.Количество. Но у меня постоянно не те результаты получаются. Запрос вроде простой но почему-то никак не получается. Вот что я пишу.
SQL
1
2
3
4
SELECT dbo.Prihod.Otdelenie, dbo.Prihod.Prihod - dbo.Rashod.rashod AS Ostatki, dbo.Prihod.Naimenovanie
FROM dbo.Prihod INNER JOIN dbo.Rashod ON dbo.Prihod.Naimenovanie = dbo.Rashod.Naimenovanie AND dbo.Prihod.Otdelenie = dbo.Prihod.Otdelenie 
WHERE dbo.Prihod.Prihod - dbo.Rashod.rashod>0
GROUP BY dbo.Prihod.Otdelenie, dbo.Prihod.Naimenovanie,dbo.Prihod.Prihod - dbo.Rashod.rashod
Из результатов запроса я понял что нужно чтобы из комбинации отделения-лекарство из Прихода вычиталась соответствующая комбинация из Расхода, но как этого добиться не могу понять. Возможно нужен какой-то другой join или как то делать комбинации уникальными в представлениях?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2017, 09:47
Ответы с готовыми решениями:

вывод остатков
есть две таблицы таблица со счетами клиентов id id_c счет ...

Запрос остатков 1С 8.2
Всем привет! Может кто делал запрос остатков номенклатуры? Поделитесь...

Запрос Остатков 1с 8.2
Всем салют =) Как можно сделать запрос остатков номенклатуры? Код привожу...

SQL запрос на вычисление остатков
Добрый вечер. В БД (mdb) имеется таблица Регистр. В ней следующая структура:...

Запрос с вычитанием(расчет остатков)
Доброго времени суток У меня есть два запроса , --один с приходом товара,...

14
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
12.04.2017, 10:20 2
в представлении уже сгруппированные данные? Текст запроса представления показали бы

Добавлено через 3 минуты
Цитата Сообщение от VovaZZ Посмотреть сообщение
AND dbo.Prihod.Otdelenie = dbo.Prihod.Otdelenie
а где здесь Rashod?
0
invm
1890 / 1279 / 383
Регистрация: 02.06.2013
Сообщений: 3,231
12.04.2017, 11:16 3
Лучший ответ Сообщение было отмечено VovaZZ как решение

Решение

T-SQL
1
2
3
4
5
6
7
select
 a.Otdelenie, a.Naimenovanie, a.Prihod - isnull(b.Rashod, 0)
from
 (select Otdelenie, Naimenovanie, sum(Prihod) as Prihod) from dbo.Prihod group by Otdelenie, Naimenovanie) a left join
 (select Otdelenie, Naimenovanie, sum(Rashod) as Rashod) from dbo.Rashod group by Otdelenie, Naimenovanie) b on b.Otdelenie = a.Otdelenie and b.Naimenovanie = a.Naimenovanie
where 
 a.Prihod > isnull(b.Rashod, 0);
1
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
12.04.2017, 11:31 4
invm, GROUP BY будет не нужен?
0
invm
1890 / 1279 / 383
Регистрация: 02.06.2013
Сообщений: 3,231
12.04.2017, 11:45 5
Цитата Сообщение от YuryK Посмотреть сообщение
GROUP BY будет не нужен?
Для чего? Соединяются два набора по уникальному (Otdelenie, Naimenovanie)
0
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
12.04.2017, 12:06 6
Цитата Сообщение от invm Посмотреть сообщение
Для чего
для sum
без этого обычно is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Добавлено через 1 минуту
если они уникальные, зачем SUM?
0
invm
1890 / 1279 / 383
Регистрация: 02.06.2013
Сообщений: 3,231
12.04.2017, 12:08 7
YuryK, вы где group by хотите расположить?
0
pincet
1323 / 911 / 123
Регистрация: 23.07.2010
Сообщений: 4,940
12.04.2017, 12:08 8
invm,
union all и агрегаты вынести из подзапроса не быстрее будет?
0
invm
1890 / 1279 / 383
Регистрация: 02.06.2013
Сообщений: 3,231
12.04.2017, 13:23 9
pincet, возможно. Как говорится: "зависит от".

Добавлено через 1 минуту
Цитата Сообщение от YuryK Посмотреть сообщение
для sum
Посмотрите внимательно на sum в предложенном запросе.
0
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
12.04.2017, 14:38 10
Цитата Сообщение от invm Посмотреть сообщение
Посмотрите внимательно на sum в предложенном запросе.
на запрос с двумя открывающимися и четырьмя закрывающимися скобками сложно смотреть внимательно
0
VovaZZ
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 12
12.04.2017, 14:45  [ТС] 11
Спасибо большое. Запрос такого вида работает как нужно:
T-SQL
1
2
3
4
5
6
select
 dbo.Prihod.Otdelenie, dbo.Prihod.Naimenovanie, dbo.Prihod.Prihod - isnull(dbo.Rashod.Rashod, 0)as Ostatki
from
  dbo.Prihod left join
 dbo.Rashod on dbo.Rashod.Otdelenie = dbo.Prihod .Otdelenie and dbo.Rashod.Naimenovanie = dbo.Prihod .Naimenovanie
where dbo.Prihod.Prihod > isnull(dbo.Rashod.Rashod, 0);
0
invm
1890 / 1279 / 383
Регистрация: 02.06.2013
Сообщений: 3,231
12.04.2017, 14:52 12
Цитата Сообщение от YuryK Посмотреть сообщение
на запрос с двумя открывающимися и четырьмя закрывающимися скобками сложно смотреть внимательно
Ну не смотрите и продолжайте считать, что ошибочные скобки маскируют group by.
0
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
12.04.2017, 15:02 13
для меня замаскировали, я подсознательно бросил читать дальше закрывающей скобки.
Сервер тоже не поймет, хотя и по другой причине
0
pincet
1323 / 911 / 123
Регистрация: 23.07.2010
Сообщений: 4,940
12.04.2017, 15:04 14
я подсознательно увидел from и не заметил скобку....
0
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
12.04.2017, 15:05 15
подсознание - оно такое
0
12.04.2017, 15:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2017, 15:05

1C 7.7 Запрос на получение остатков по счетам
Добрый день! Так получилось, что пути с семеркой пересеклись впервые. Пишу...

Получение остатков регистра через запрос
Здравствуйте. Нужно получить количественный остаток номенклатуры из регистра...

Распределение газет по почтовым отделениям
Такая система должна обеспечивать хранение, просмотр и изменение сведений о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru