powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение MIN от выражения
13 сообщений из 13, страница 1 из 1
Получение MIN от выражения
    #32009686
AlexanderVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как написать запрос, выполняющий такие действия:
SELECT MIN(COUNT(Field1)-Field2) FROM MyTable
Сам я это реализовал через #tmp, а может можно обойтись без временной таблицы?

Всех благ, Александр.
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009699
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT COUNT(Field1)-MAX(Field2) FROM MyTable
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009701
SergG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предлагаю такой вариант
( только count(field1) - зачем такое условие ???)
select min(tab.t1)
from
(select count(field1)-field2 as t1
from mytable
group by field2 ) tab
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009742
AlexanderVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я перестарался, упростив условие в своем вопросе. На самом деле есть 2 таблицы, 1-справочник, 2ую назовем склад, где каждая запись храниться отдельно. Т.е. приобретая какое-либо наименование по справочнику в количестве 5 штук в таблицу склад записываем 5 строк. А в справочнике есть свойство - Минимальный Остаток. При запуске программы я хочу получть не конкретные остатки на складе, а цифру характеризующую наименьший остаток, который должен быть всегда больше 0, с учетом минимально-допустимого остатка. Уфффф, кажется все.

Всех благ, Александр.
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009763
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
А попробуй так:
select T.ID, min(T.Fld2-SubQ.Cnt) from Tbl2 T, (select ID, count(fld1) as Cnt from Tbl1 group by ID) SubQ
where T.ID=SubQ.ID
group by T.ID
ну или что-то в этом роде... Правда, тормоза гарантирую .
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009764
andy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, а минимальный остаток для наименования хранится 1, или вы после каждой транзакции добавляете строку с новым остатком? Можете привести примеры строк в каждой из таблиц?
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009783
AlexanderVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле 'Минимальный Остаток'(МО) храниться в справочнике вместе с наименованием в 1 записи. Т.е. если у Реактив-1 МО - 5 единиц, то при наличии его на складе в кол-ве 6 едениц, склад молчит, а если его осталось 5 и менее едениц - слкад начинает гундеть - срочно закупите Реактив-1.
)

Всех благ, Александр.
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009806
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял:

create table #spr(id int, minOst int)
create table #sklad(id int)

insert #spr select 1,3
insert #spr select 2,4

insert #sklad select 1
insert #sklad select 1
insert #sklad select 1
insert #sklad select 1
insert #sklad select 1
insert #sklad select 2
insert #sklad select 2
insert #sklad select 2

select p.id, count(*)-p.minOst
from #sklad k, #spr p
where k.id=p.id
group by p.id,p.minOst

Еще чтобы выбирать только те товары которых осталось меньше допустимого, можно добавить в конце строчку
having count(*)-p.minOst<=0
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009869
AlexanderVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergSuper
Вы правилно меня поняли, насчет организации данных в таблицах, но результат я хотел иметь обобщенный, т.е. в виде 1 записи, отражающей наименьший остаток. Может это не информативно, но этот результат - всего лишь флаг, оповещающий о состоянии склада, вот.

Всех благ, Александр.
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009895
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели не очевидно?


select top 1 p.id, count(*)-p.minOst
from #sklad k, #spr p
where k.id=p.id
group by p.id,p.minOst
order by count(*)-p.minOst
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009930
AlexanderVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это грустно, но факт - не допер, а ведь так просто!!!
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32009933
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант, может понадобиться нечто подобное
if exists(select p.id from #sklad k, #spr p where k.id=p.id group by p.id,p.minOst having count(*)<p.minOst)
begin
...
end
...
Рейтинг: 0 / 0
Получение MIN от выражения
    #32010479
Sasha_T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маленькое дополнение к скрипту:

>> select top 1 p.id, count(*)-p.minOst
>> from #sklad k, #spr p
>> where k.id=p.id
>> group by p.id,p.minOst
>> order by count(*)-p.minOst

Если на top 1 будет ругаться , то можно сделать так:

set rowcount 1
>> select top 1 p.id, count(*)-p.minOst
>> from #sklad k, #spr p
>> where k.id=p.id
>> group by p.id,p.minOst
>> order by count(*)-p.minOst
sen rowcount 0 -- обязательно!!!!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение MIN от выражения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]