powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Направьте на путь истинный в составлении запроса =)
18 сообщений из 43, страница 2 из 2
Направьте на путь истинный в составлении запроса =)
    #39779329
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_Artur,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
declare @ds datetime = dateadd(hour, 7, cast(cast(getdate() as date) as datetime)), @de datetime = dateadd(hour, 19, cast(cast(getdate() as date) as datetime));

with tb as
(
  select
   OID, StartDate, View,
   row_number() over (partition by OID order by StartDate desc) as rn
  from
   ТаблицаБ 
  where 
   StartDate between @ds and @de
)
select
 coalesce(sum(TA.Status), 0) as status,
 TV.OID as oid
from
 ТаблицаВ AS TV left join
 tb on tb.rn = 1 and tb.OID = TV.OID and tb.View = 'простой' left join
 ТаблицаА AS TA ON TA.OID = TB.OID and TA.Date between @ds and @de and (tb.StartDate is null or TA.Date < tb.StartDate)
where
 TV.IP  =  '1.2.3.4'
group by
 TV.OID;
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779353
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
Ошибка
не удалось выполнить привязку составного идентификатора "TB.OID" в этой строчке:
Код: sql
1.
ТаблицаА AS TA ON TA.OID = TB.OID and TA.Date between @ds and @de and (tb.StartDate is null or TA.Date < tb.StartDate)



Я пробовал писать и TV.OID и tb.OID результат один и тот же.

Такая же ошибка связанная с "tb.StartDate" в той же строчке.

Подскажите где я мог ошибиться?
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779357
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
 ТаблицаА AS TA ON TA.OID = TV.OID and TA.Date between @ds and @de and (tb.StartDate is null or TA.Date < tb.StartDate)
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779360
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно это из за того что есть промежуточная таблица для связи OID таблиц А и В, вот так сейчас рабочий запрос выглядит без учета отсутствия значений:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
)
select
 coalesce(sum(RF.Status),0) as status,
 CON.OID as oid
from
database1 AS RF 
left join database4 AS RR ON RF.Reader = RR.Oid -- вот эта промежуточная таблица
left join database3 AS CON ON CON.OID = RR.Asset 
left join tb on tb.rn = 1 and tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and tb.End_date is null 
where
 CON.IP = '1.2.3.4'
 and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
 and (tb.Start_date is null or RF.Date < tb.Start_date)
group by CON.OID;
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779368
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь переделать вот так, выходят те самые ошибки:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
)
select
 coalesce(sum(RF.Status),0) as status,
 CON.OID as oid
from
database3 AS CON
left join tb on tb.rn = 1 and tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and tb.End_date is null 
left join database4 AS RR
left join database1 AS RF ON RF.Reader = RR.Oid AND RR.Asset = CON.OID
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
and (tb.Start_date is null or RF.Date < tb.Start_date) 
where
 CON.IP = '1.2.3.4'
group by CON.OID;



Вот тут ошибки с CON.OID и tb.Start_date:
Код: sql
1.
2.
3.
left join database1 AS RF ON RF.Reader = RR.Oid AND RR.Asset = CON.OID
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
and (tb.Start_date is null or RF.Date < tb.Start_date) 
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779373
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Все я додумался, заработало. Спасибо вам =)
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779375
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так заработало:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
)
select
 coalesce(sum(RF.Status),0) as status,
 CON.OID as oid
from
database3 AS CON
left join tb on tb.rn = 1 and tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and tb.End_date is null 
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
and (tb.Start_date is null or RF.Date < tb.Start_date) 
where
 CON.IP = '1.2.3.4'
group by CON.OID;
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779598
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, пытался по аналогии модифицировать этот запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
)
select
 coalesce(sum(RF.Status),0) as status,
 CON.OID as oid
from
database3 AS CON
left join tb on tb.rn = 1 and tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and tb.End_date is null 
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
and (tb.Start_date is null or RF.Date < tb.Start_date) 
where
 CON.IP = '1.2.3.4'
group by CON.OID;



Суть проблемы
Изначально таблица database2 выглядела так:
Код: sql
1.
2.
3.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-26 16:06:39 | NULL
2A174A77-AA31 | E3E5F3C0-A20A | не трогать   | 2019-02-26 15:06:39 |2019-02-26 15:07:39



То-есть есть последний простой с End_date is null, после даты Start_date мы не учитываем данные.

Теперь же допустим эта таблица приобрела вид:
Код: sql
1.
2.
3.
4.
5.
6.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-26 16:06:39 | NULL
2A174A77-AA31 | E3E5F3C0-A20A | не трогать   | 2019-02-26 15:06:39 | 2019-02-26 15:07:39
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-26 12:11:14 | 2019-02-26 12:20:14
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-26 11:36:15 | 2019-02-26 11:39:00
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-26 10:02:00 | 2019-02-26 10:04:00



Теперь же надо помимо предыдущей задачи, игнорировать промежутки времени между всеми Start_date и End_date где View_problem = 'простой' и TPA_ior = CON.OID и End_date is not null.

Попробовал сам модифицировать запрос, написал так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
),
 dt as -- добавил еще один опрос этой же таблицы (наверно зря)
(
select
   TPA_ior, Start_date, End_date, View_problem
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
   and View_problem = 'Плановый простой'
   and End_date is not null
)

select
 coalesce(sum(RF.Status),0) as status,
 CON.OID as oid
from
database3 AS CON
left join dt on dt.TPA_ior = CON.OID -- прибавил dt, после этого результат sum(RF.Status) умножился на два, что не требуется
left join tb on tb.rn = 1 and tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and tb.End_date is null 
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
and (tb.Start_date is null or RF.Date < tb.Start_date) 
and RF.Date NOT BETWEEN dt.Start_date -- пытаюсь задать начало даты которую не надо учитывать
    AND dt.End_date  -- конец даты которую не надо учитывать
where
 CON.IP = '1.2.3.4'
group by CON.OID;



С такого запроса данные sum(RF.Status) умножились на два, и после добавления NOT BETWEEN совсем странные дела происходят он прибавляет данные и вычитает.
Подскажите пожалуйста где ошибся?
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779614
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил вот так, на выходе все status ноль:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
)
select
 coalesce(sum(RF.Status),0) as status,
 CON.OID as oid
from
database3 AS CON
left join tb on tb.rn = 1 and tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and tb.End_date is null 
left join tb as dt  tb.TPA_ior = dt.TPA_ior and tb.View_problem = 'простой' and tb.End_date is not null -- если так сделать, то ничего не прибавляется
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
and (tb.Start_date is null or RF.Date < tb.Start_date) 
and RF.Date NOT BETWEEN dt.Start_date -- но после этого результат по нулям
    AND dt.End_date  -- но после этого результат по нулям
where
 CON.IP = '1.2.3.4'
group by CON.OID;
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779625
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_Artur,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
 coalesce(sum(case when tb.TPA_ior is null then tbRF.Status else 0 end),0) as status,
 CON.OID as oid
from
database3 AS CON
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
 and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database2 as tb on tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and RF.Date between tb.Start_date and isnull(tb.End_date, '99991231')
where
 CON.IP = '1.2.3.4'
group by CON.OID;
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779627
Фотография student-uni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_Artur,

у тебя сейчас "ТА лефт джоин ТБ"
что означает "дай мне все из ТА и то из ТБ где совпадает ОИД"
соответственно если в таблице А по OID AA9ADECE-F455 за промежуток времени вообще нет данных
то и не будет ничего в результате, т.к. OID AA9ADECE-F455 есть только в Таблице Б.

А вот если наоборот заджойнить:"ТБ лефт джоин ТА"
то это будет значить "дай мне все из ТБ и то из ТА где совпадает ОИД"
тогда OID AA9ADECE-F455 будет обязательно присутствивать,
только ТА.Status будет равен NULL
и чтоб это поправить вызывай поле с Проверкой ISNULL(TA.Status,0)
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779628
Фотография student-uni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_Artur,

у тебя сейчас "ТА лефт джоин ТБ"
что означает "дай мне все из ТА и то из ТБ где совпадает ОИД"
соответственно если в таблице А по OID AA9ADECE-F455 за промежуток времени вообще нет данных
то и не будет ничего в результате, тк OID AA9ADECE-F455 есть только в Таблице Б.

А вот если наоборот заджойнить:"ТБ лефт джоин ТА"
то это будет значить "дай мне все из ТБ и то из ТА где совпадает ОИД"
тогда OID AA9ADECE-F455 будет обязательно присутствивать,
только ТА.Статус будет равен НИЛЛ
и чтоб это поправить вызывай поле с Проверкой IS NULL(TA.Status,0)
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779639
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

спасибо вам, изменил так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
with tb as
(
   select
   TPA_ior, Start_date, End_date, View_problem,
   row_number() over (partition by TPA_ior order by Start_date desc) as rn
  from
   database2
  where 
   Start_date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
)
select
 coalesce(sum(case when tb.TPA_ior is null then RF.Status else 0 end),0) as status,
 CON.OID as oid
from
database3 AS CON
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
 and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database2 as tb on tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and RF.Date between tb.Start_date and isnull(tb.End_date, '99991231')
where
 CON.IP = '1.2.3.4'
group by CON.OID;



Получилось вот что:

Допустим с 7 до 10 часов status = 30

Если database2 будет иметь такой вид:
Код: sql
1.
2.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | NULL



Результат будет правильный status = 0

Если database2 будет иметь такой вид:
Код: sql
1.
2.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | 2019-02-27 08:00:00



Результат будет правильный status = 20

Но вот если database2 будет иметь такой вид:
Код: sql
1.
2.
3.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | 2019-02-27 08:00:00
111DB6F1-6785 | E3E5F3C0-A20A | простой      | 2019-02-27 09:00:00 | 2019-02-27 10:00:00



Результат будет status = 20, хотя должно остаться status = 10

Видимо он смотрит только первую строку

Если database2 будет иметь такой вид:
Код: sql
1.
2.
3.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | 2019-02-27 08:00:00
111DB6F1-6785 | E3E5F3C0-A20A | простой      | 2019-02-27 09:00:00 | NULL



Результат будет 20, он не учитывает строку где есть End_date is not null, а перестает считать с 9 часов.
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779642
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее в конце результат будет 10
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779646
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

простите, я не правильно исправил, сейчас потестирую. Спасибо большое.
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779657
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

ПО такому запросу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
 coalesce(sum(case when tb.TPA_ior is null then RF.Status else 0 end),0) as status,
 CON.OID as oid
from
database3 AS CON
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
 and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database2 as tb on tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and RF.Date between tb.Start_date and isnull(tb.End_date, '99991231')
where
 CON.IP = '1.2.3.4'
group by CON.OID;



Результаты такие же:
Допустим с 7 до 10 часов status = 30

Если database2 будет иметь такой вид:
Код: sql
1.
2.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | NULL




Результат будет правильный status = 0

Если database2 будет иметь такой вид:
Код: sql
1.
2.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | 2019-02-27 08:00:00




Результат будет правильный status = 20

Но вот если database2 будет иметь такой вид:
Код: sql
1.
2.
3.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | 2019-02-27 08:00:00
111DB6F1-6785 | E3E5F3C0-A20A | простой      | 2019-02-27 09:00:00 | 2019-02-27 10:00:00




Результат будет status = 20, хотя должно остаться status = 10

Видимо он смотрит только первую строку

Если database2 будет иметь такой вид:
Код: sql
1.
2.
3.
ID            | TPA_ior       | View_problem | Start_date          | End_date 
891DB1F0-4024 | E3E5F3C0-A20A | простой      | 2019-02-27 07:00:00 | 2019-02-27 08:00:00
111DB6F1-6785 | E3E5F3C0-A20A | простой      | 2019-02-27 09:00:00 | NULL




Результат будет 10, он не учитывает строку где есть End_date is not null, а перестает считать с 9 часов.

Моих знаний пока не хватает самому разобраться, поищу на этом форуме похожие темы.
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779660
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_ArturВидимо он смотрит только первую строкуБерется та строка, которая соответствует условию соединения.
Уберите агрегирование и смотрите что возвращает запрос.
...
Рейтинг: 0 / 0
Направьте на путь истинный в составлении запроса =)
    #39779702
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

спасибо за способ проверки, действительно как положено все отрабатывает, проверял так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
 case when tb.TPA_ior is null then RF.Status else 0 end as status,
 RF.Date, 
 tb.TPA_ior
from
database3 AS CON
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
 and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database2 as tb on tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and RF.Date between tb.Start_date and isnull(tb.End_date, '99991231')
where
 CON.IP = '1.2.3.4'
group by RF.Status, RF.Date, tb.TPA_ior
order by RF.Date ASC



Видимо до этого где то ошибку допустил, все правильно подсчитывает, спасибо вам большое.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Направьте на путь истинный в составлении запроса =)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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