Не удалось связать идентификатор из нескольких частей «iis.sourceId» - PullRequest
0 голосов
/ 30 мая 2018

Любое предложение / решение для этой проблемы?

Не удалось связать идентификатор из нескольких частей "iis.sourceId".

ALTER PROCEDURE [dbo].[InstrumentSourceSnapSelector] 
    @searchedString nvarchar(100) = null
, @at datetime

AS
BEGIN

DECLARE @sql as nvarchar(4000)
DECLARE @ParmDefinition nvarchar(500);
SET @at=dateadd(MILLISECOND, -datepart(MILLISECOND, @at), isnull(@at,getdate()))  --on tronque les ms


CREATE TABLE #TEMP
(
    SourceId UNIQUEIDENTIFIER,
    instrumentIdentifierId UNIQUEIDENTIFIER, 
    instrumentId UNIQUEIDENTIFIER, 
    vacationId UNIQUEIDENTIFIER, 
    MaxReqTime DATETIME
)

INSERT INTO #TEMP
SELECT 
    SourceId,
    instrumentIdentifierId, 
    instrumentId, 
    vacationId, 
    max(requestTime) as MaxReqTime 
FROM 
    (instrumentSourceSnap inst
    INNER JOIN 
    VacationTask T 
    ON inst.vacationTaskId = T.id)
GROUP BY 
    SourceId,instrumentIdentifierId, instrumentId, vacationId

SELECT DISTINCT

      iss.id 
    , i.name    AS Name
    , s.name    AS sourceName
    , d.name    AS identifier
    , ii.value  AS identifierValue 
    , v.name    AS Vacation

FROM 
      instrumentSourceSnap iss
      INNER JOIN #TEMP T
        ON 
          T.sourceId = iis.sourceId AND
          T.instrumentIdentifierId = iis.instrumentIdentifierId AND
          T.instrumentId = iis.instrumentId AND
          T.MaxReqTime = iis.ReuqestTime
      INNER JOIN vacationTask vt ON vt.id = iss.vacationTaskId
      INNER JOIN vacation v      ON v.id = vt.vacationId
      INNER JOIN instrument i    ON i.id = iss.instrumentId     
          INNER JOIN source s        ON s.id = iss.sourceId
      INNER JOIN instrumentIdentifier ii ON ii.instrumentId=i.id
      INNER JOIN identifier d ON d.Id=ii.identifierId
          INNER JOIN instrumentSource si ON si.instrumentId = i.id and si.sourceId = s.id


END
GO

1 Ответ

0 голосов
/ 30 мая 2018

Как и в комментариях, все iis заменено на iss, поскольку iss является псевдонимом instrunmentSourceSnap.

ALTER PROCEDURE [dbo].[InstrumentSourceSnapSelector] 
    @searchedString nvarchar(100) = null
, @at datetime

AS
BEGIN

DECLARE @sql as nvarchar(4000)
DECLARE @ParmDefinition nvarchar(500);
SET @at=dateadd(MILLISECOND, -datepart(MILLISECOND, @at), isnull(@at,getdate()))  --on tronque les ms


CREATE TABLE #TEMP
(
    SourceId UNIQUEIDENTIFIER,
    instrumentIdentifierId UNIQUEIDENTIFIER, 
    instrumentId UNIQUEIDENTIFIER, 
    vacationId UNIQUEIDENTIFIER, 
    MaxReqTime DATETIME
)

INSERT INTO #TEMP
SELECT 
    SourceId,
    instrumentIdentifierId, 
    instrumentId, 
    vacationId, 
    max(requestTime) as MaxReqTime 
FROM 
    (instrumentSourceSnap inst
    INNER JOIN 
    VacationTask T 
    ON inst.vacationTaskId = T.id)
GROUP BY 
    SourceId,instrumentIdentifierId, instrumentId, vacationId

SELECT DISTINCT

      iss.id 
    , i.name    AS Name
    , s.name    AS sourceName
    , d.name    AS identifier
    , ii.value  AS identifierValue 
    , v.name    AS Vacation

FROM 
      instrumentSourceSnap iss
      INNER JOIN #TEMP T
        ON 
          T.sourceId = iss.sourceId AND
          T.instrumentIdentifierId = iss.instrumentIdentifierId AND
          T.instrumentId = iss.instrumentId AND
          T.MaxReqTime = iss.ReuqestTime
      INNER JOIN vacationTask vt ON vt.id = iss.vacationTaskId
      INNER JOIN vacation v      ON v.id = vt.vacationId
      INNER JOIN instrument i    ON i.id = iss.instrumentId     
          INNER JOIN source s        ON s.id = iss.sourceId
      INNER JOIN instrumentIdentifier ii ON ii.instrumentId=i.id
      INNER JOIN identifier d ON d.Id=ii.identifierId
      INNER JOIN instrumentSource si ON si.instrumentId = i.id and si.sourceId = s.id


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