powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка с запросом
12 сообщений из 12, страница 1 из 1
Загрузка с запросом
    #32042740
Dino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините за назойливость, но не могу составить запрос:
в таблице есть поля dz(дата заявки) и du(дата устранения повреждения). Требуется подсчитать количество записей по графе "Осталось неустраненных повреждений от прошлых дней" за каждый день (data) выбранного периода (от d1 до d2).
Логически условие такое: (dz<data) and (du>=data).
Результат должен быть примерно таким:
01.01.2000 7
01.02.2000 15 и т.д. за месяц.
Наверно надо писать пользовательскую функцию?
Дайте дельный совет.
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32042749
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял.
Надо что бы у Вас была таблица с днями, на которые вы хотите получить (days(data datetime))
Код: plaintext
1.
2.
3.
4.
select data, count(*)
  from days, tbl
  where (dz<data) and (du>=data)
  group by data 

Кстати обычно пишут не data, а dat a
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32042750
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял.
Надо что бы у Вас была таблица с днями, на которые вы хотите получить (days(data datetime))
Код: plaintext
1.
2.
3.
4.
select data, count(*)
  from days, tbl
  where (dz<data) and (du>=data)
  group by data 

Кстати обычно пишут не data, а dat e
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32042755
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что типа этого:

create function Test (@StartDate smalldatetime, @EndDate smalldatetime)

returns @Test table
(ID bigint identity(1,1),
ActualDate smalldatetime,
DamagesCount smalldatetime)
as

begin
while @StartDate<=@EndDate
begin
insert into @Test(ActualDate, DamagesCount)
select @StartDate as ActualDate, DamagesCount from
(select count(du) as DamagesCount from mytable
where dz<=@StartDate and du>@StartDate)
@StartDate=DateAdd(day, 1, @StartDate)
end

return
end
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043039
Dino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuper:
А нельзя ли таблицу с днями составить "на лету", через параметры или цикл?
Maks:
Ругается на строку:
@StartDate=DateAdd(day, 1, @StartDate)
Неверный синтаксис.
(SQL Server 2000)
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043052
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dino
Sorry

select @StartDate=DateAdd(day, 1, @StartDate)

А таблица на лету и создается ...
Читай BOL
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043060
Dino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maksu:
Все равно ругается на той же строке. Чего то не хватает.
Сейчас читаю BOL, но врубится быстро не могу.
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043080
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Савсем плахой стэл :))

set @StartDate=DateAdd(day, 1, @StartDate)
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043083
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Makc
>>Савсем плахой стэл :))
>>
>>set @StartDate=DateAdd(day, 1, @StartDate)

?
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043091
Dino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тот же результат.
Может пропущено где-то go
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043095
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
create function Test (@StartDate smalldatetime, @EndDate smalldatetime)

returns @Test table (ID bigint identity(1,1), ActualDate smalldatetime, DamagesCount smalldatetime)
as

begin
while @StartDate<=@EndDate
begin
insert into @Test(ActualDate, DamagesCount) select @StartDate as ActualDate, DamagesCount from
(select count(du) as DamagesCount from mytable where dz<=@StartDate and du>@StartDate) AS a

select @StartDate = DateAdd(day, 1, @StartDate)
end
return
end
...
Рейтинг: 0 / 0
Загрузка с запросом
    #32043116
Dino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь все ОК.
Спасибо
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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