SQL-запрос для получения данных из 2 дБ и сопоставления поля по дате - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть 2 дБ, из одного со следующим запросом я получаю данные ниже.

select COMParee.IDAREA as Lettore
    , TIMBACCESSI.CODICEBADGE as [Numero tessera]
    , COGNOME as Cognome
    , NOME as Nome
    , AZIENDE.DESCR as Azienda
    , FORMAT(DATAORA,'HH:mm') as Ora
    , FORMAT(dataora,'dd/MM/yyyy') as Data
    , iif(verso = 0,'U','E') as Flusso 
from timbaccessi
join badge on badge.codice = timbaccessi.codicebadge
join anagrafico on anagrafico.ID = badge.IDUTILIZZATORE
join profilo on profilo.IDUTILIZZATORE = badge.IDUTILIZZATORE
join aziende on aziende.id = profilo.IDAZIENDA
join terminali on terminali.id = TIMBACCESSI.IDTERMINALE
join comparee on terminali.id = COMPAREE.IDTERMINALE
where DATAORA >= @DataDa
    and DATAORA <= @DataA

idArea  Badge       Name    Name    Note    Time    Date
1000000 0000001730  BLABLA  ROBERTO XXXX    06:42   09/10/2019  
1000000 0000001719  BLABLA  CLAUDIO XXXX    11:53   13/10/2019  

Первое поле "1000000" - это идентификатор. В другой БД у меня есть от 1 до нескольких записей, связанных с этим идентификатором в определенном диапазоне данных. По сути это хронология названия этого подразделения в разные периоды. Например:

idArea  Descr From       To
1000000 Test1 01/10/2019 10/10/2019
1000000 Test2 11/10/2019 15/10/2019 

Мне нужно изменить первый запрос, чтобы получить:

Test1 0000001730    BLABLA  ROBERTO XXXX    06:42   09/10/2019  
Test2 0000001719    BLABLA  CLAUDIO XXXX    11:53   13/10/2019  

Поэтому вместо идентификатора я хочу получить имя, связанное с этим идентификатором в этот период. .

1 Ответ

0 голосов
/ 08 ноября 2019

Как предложил Шон Ланге, я решил свою проблему с помощью Cross Apply.

https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...