Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка с запросом / 12 сообщений из 12, страница 1 из 1
13.08.2002, 09:51:19
    #32042740
Dino
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка с запросом
Извините за назойливость, но не могу составить запрос:
в таблице есть поля dz(дата заявки) и du(дата устранения повреждения). Требуется подсчитать количество записей по графе "Осталось неустраненных повреждений от прошлых дней" за каждый день (data) выбранного периода (от d1 до d2).
Логически условие такое: (dz<data) and (du>=data).
Результат должен быть примерно таким:
01.01.2000 7
01.02.2000 15 и т.д. за месяц.
Наверно надо писать пользовательскую функцию?
Дайте дельный совет.
...
Рейтинг: 0 / 0
13.08.2002, 10:14:11
    #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
13.08.2002, 10:14:24
    #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
13.08.2002, 10:21:17
    #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
14.08.2002, 08:27:31
    #32043039
Dino
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка с запросом
SergSuper:
А нельзя ли таблицу с днями составить "на лету", через параметры или цикл?
Maks:
Ругается на строку:
@StartDate=DateAdd(day, 1, @StartDate)
Неверный синтаксис.
(SQL Server 2000)
...
Рейтинг: 0 / 0
14.08.2002, 09:26:16
    #32043052
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка с запросом
2 Dino
Sorry

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

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

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

?
...
Рейтинг: 0 / 0
14.08.2002, 11:13:47
    #32043091
Dino
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка с запросом
Тот же результат.
Может пропущено где-то go
...
Рейтинг: 0 / 0
14.08.2002, 11:21:52
    #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
14.08.2002, 12:01:51
    #32043116
Dino
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка с запросом
Теперь все ОК.
Спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка с запросом / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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