Using Nested Select in Entity SQL

18 Views Asked by At

I have an issue with getting required information from the ESQL - it throws error and I'm out of ideas how to solve this So, I have a normal T-SQL script that does work and returns what I need (Names) and in T-SQL it works fine with CASE () and nested SELECTS

SELECT  RI.INCIDENT_ID AS AssociatedArtifactID, 'Incident' AS ArtifactType, INC.[NAME]
FROM [dbo].[RPT_REQUIREMENT_INCIDENTS] AS RI
INNER JOIN [dbo].[RPT_INCIDENTS] AS INC ON INC.INCIDENT_ID=RI.INCIDENT_ID
WHERE RI.REQUIREMENT_ID = 4
UNION
SELECT AA.DEST_ARTIFACT_ID AS AssociatedArtID, AA.[DEST_ARTIFACT_TYPE_NAME] AS AssociatedArtifact, 
(CASE
--RQ
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Requirement' THEN 
    (SELECT RQ.[NAME] FROM [dbo].[RPT_REQUIREMENTS] AS RQ 
    WHERE RQ.[REQUIREMENT_ID]=AA.DEST_ARTIFACT_ID)
    --NC    
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Incident' THEN 
    (SELECT INC.[NAME] FROM [dbo].[RPT_INCIDENTS] AS INC 
    WHERE INC.[INCIDENT_ID]=AA.DEST_ARTIFACT_ID)
--RL    
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Release' THEN 
    (SELECT RL.[NAME] FROM [dbo].[RPT_RELEASES] AS RL 
    WHERE RL.[RELEASE_ID]=AA.DEST_ARTIFACT_ID)
--RK    
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Risk' THEN 
    (SELECT RK.[NAME] FROM [dbo].[RPT_RISKS] AS RK 
    WHERE RK.[RISK_ID]=AA.DEST_ARTIFACT_ID)

--TK
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Task' THEN 
    (SELECT TK.[NAME] FROM [dbo].[RPT_TASKS] AS TK 
    WHERE TK.[RISK_ID]=AA.DEST_ARTIFACT_ID)
    END ) AS ArtifactName
FROM [dbo].[RPT_ARTIFACT_ASSOCIATION] AS AA
WHERE (AA.SOURCE_ARTIFACT_ID = 4 AND AA.SOURCE_ARTIFACT_TYPE_ID = 1) 

The corresponding output is correct for that query: enter image description here

Now I need to interpret the same into ESQL. Have tried the same - it throws an error System Error: The server method 'Reports_RetrieveCustomQueryData' failed

(SELECT RI.INCIDENT_ID AS AssociatedArtifactID, 'Incident' AS ArtifactType, INC.Name
FROM SPEntities.R_RequirementINCIDENTS AS RI
INNER JOIN SPEntities.R_INCIDENTS AS INC ON INC.INCIDENT_ID=RI.INCIDENT_ID
WHERE RI.REQUIREMENT_ID = 4)
UNION
(SELECT AA.DEST_ARTIFACT_ID AS AssociatedArtID, AA.DEST_ARTIFACT_TYPE_NAME AS AssociatedArtifact,
(CASE
--RQ
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Requirement' THEN 
    (SELECT RQ.NAME FROM SpiraTestEntities.R_Requirements AS RQ 
    WHERE RQ.REQUIREMENT_ID=AA.DEST_ARTIFACT_ID)
    --NC    
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Incident' THEN 
    (SELECT INC.NAME FROM SpiraTestEntities.R_INCIDENTS AS INC 
    WHERE INC.INCIDENT_ID=AA.DEST_ARTIFACT_ID)
--RL    
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Release' THEN 
    (SELECT RL.NAME FROM SpiraTestEntities.R_Releases AS RL 
    WHERE RL.RELEASE_ID=AA.DEST_ARTIFACT_ID)
--RK    
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Risk' THEN 
    (SELECT RK.NAME FROM SpiraTestEntities.R_Risks AS RK 
    WHERE RK.RISK_ID=AA.DEST_ARTIFACT_ID)

--TK
    WHEN AA.DEST_ARTIFACT_TYPE_NAME='Task' THEN 
    (SELECT TK.NAME FROM SpiraTestEntities.R_Tasks AS TK 
    WHERE TK.RISK_ID=AA.DEST_ARTIFACT_ID)
    END ) AS ArtifactName
FROM SPEntities.R_ArtifactAssociations AS AA
WHERE AA.SOURCE_ARTIFACT_ID = 34 AND AA.SOURCE_ARTIFACT_TYPE_ID = 1)

Then I've tried with simplified version:

SELECT AA.DEST_ARTIFACT_ID AS AssociatedArtID, 
AA.SOURCE_ARTIFACT_ID AS SourceArtifact, 
AA.DEST_ARTIFACT_TYPE_NAME AS AssociatedArtifact, 
AA.ARTIFACT_LINK_TYPE_NAME AS Link, (SELECT cast(INC.Name as string) FROM SpiraTestEntities.R_Incidents as INC) AS NAME

But the result is an error in a column itself

enter image description here

Any help or suggestion appreciated

0

There are 0 best solutions below