Подзапрос не возвращает значения - PullRequest
0 голосов
/ 17 января 2020

У меня есть запрос, содержащий подзапрос, который использует результат временной таблицы в операторе WHERE подзапроса. Однако это не возвращает ожидаемых результатов. По сути, существует таблица EXT_Workpackage, которая содержит значения для EXT_Workpackage_ID (первичный ключ) и Parent_Workpackage_ID. Я использую Parent_Workpackage_ID для возврата Workpackage_Code родительского элемента (с рабочими пакетами может быть связано несколько рабочих пакетов).

Я скопирую код ниже:

    USE DeltekPIMQA

    select
    pa.EXT_Workpackage_ID,
    pa.Parent_Workpackage_ID [Parent_Workpackage_ID],
    SUM(CONVERT(DECIMAL(18,2),CONVERT(decimal(18,2),ISNULL(h.Hours,0))/60)) [hrs]

    INTO #tempactualhoursb
    FROM 
    EXT_Workpackage wp
    LEFT JOIN exvw_tmshours h on wp.Workpackage_Code=h.wp collate SQL_Latin1_General_CP1_CI_AS
    LEFT JOIN EXT_Workpackage pa on wp.Parent_Workpackage_ID=pa.EXT_Workpackage_ID
    WHERE wp.Project_ID=868
    and pa.Workpackage_Code is not null
    Group by pa.EXT_Workpackage_ID,pa.Workpackage_Code, pa.Parent_Workpackage_ID
    ORDER BY pa.Workpackage_Code


    select
    wp.EXT_Workpackage_ID,
    wp.Workpackage_Code [Code],
    RIGHT(wp.Workpackage_Code,3) [job],
    wp.name [Name],
    wp.Parent_Workpackage_ID [Parent_Workpackage_ID],
    wps.name [Status],
    wps.name [@stato],
   wpc.name [ContractType],
    wpt.name [LeadTrade],
    --PWC.Workpackage_Code,


    CASE
        WHEN WPS.ext_workpackage_status_id not in (3,13) THEN ISNULL(wp.Duration,0)
        ELSE 0
    END
    [SalesBudget],

    --ISNULL(wp.Duration,0) [SalesBudget],





    ISNULL(tah.hrs,0)- ISNULL(wp.Duration,0) [PerformanceVsSales],
    CAST(ISNULL(CONVERT(INT,(tah.hrs- wp.Duration)/NULLIF(wp.duration,0)*100),0) as varchar(16)) + '%' [Percent],
    (SELECT ISNULL(sum(ch.duration),0) from EXT_Workpackage ch where ch.Parent_Workpackage_ID=wp.ext_workpackage_id and ch.ext_workpackage_status_id not in (3,13)) [PWP_Planned],

    ISNULL(tah.hrs,0) [ActualHours],
    (select CONVERT(varchar,count(*)) from EXT_Workpackage wx where wx.Parent_Workpackage_ID=wp.ext_workpackage_id and wx.EXT_Workpackage_Status_ID in (2)) [WPLive],
    (select CONVERT(varchar,count(*)) from EXT_Workpackage wx where wx.Parent_Workpackage_ID=wp.ext_workpackage_id and wx.EXT_Workpackage_Status_ID in (1,2,5,7,8,12)) + ' / ' +
    (select CONVERT(varchar,count(*)) from EXT_Workpackage wx where wx.Parent_Workpackage_ID=wp.ext_workpackage_id and wx.EXT_Workpackage_Status_ID in (2)) [WPsCountLive],

    (SELECT ISNULL(sum(ch.Material_Cost),0) from EXT_Workpackage ch where ch.Parent_Workpackage_ID=wp.ext_workpackage_id) [PlannedChildMaterials],
    ISNULL(wp.Material_Cost,0) [PlannedMaterials],
    (SELECT TOP 1 Workpackage_Code FROM EXT_Workpackage WHERE Parent_Workpackage_ID = tah.Parent_Workpackage_ID AND Parent_Workpackage_ID IS NOT NULL) [Parent_Workpackage_Code],




    CASE
        WHEN wps.completed=1 THEN 1
        WHEN wps.completed = 0 THEN 0
    END [workpackage/@iscomplete]
    --(SELECT TOP 1 Workpackage_Code FROM EXT_Workpackage WHERE EXT_Workpackage_ID = wp.Parent_Workpackage_ID) AS [Parent_Workpackage_Code]
    from EXT_Workpackage AS wp
    LEFT JOIN Project p on wp.Project_ID=p.Project_ID
    LEFT JOIN EXT_Workpackage_Status wps on wp.EXT_Workpackage_Status_ID=wps.EXT_Workpackage_Status_ID
    LEFT JOIN EXT_Workpackage_Contract_Type wpc on wp.EXT_Workpackage_Contract_Type_ID=wpc.EXT_Workpackage_Contract_Type_ID
    LEFT JOIN EXT_Workpackage_Type wpt on wp.EXT_Workpackage_Type_ID=wpt.EXT_Workpackage_Type_ID
    LEFT JOIN #tempactualhoursb tah on wp.EXT_Workpackage_ID=tah.ext_workpackage_id
    LEFT JOIN EXT_Workpackage_Billing_Type b on wp.Billing=b.EXT_Workpackage_Billing_Type_ID
    --CROSS APPLY   [dbo].[EXT_FN_Parent_Workpackage_Code] (#tempactualhoursb.Parent_Workpackage_ID) PWC ON wp.EXT_Workpackage_ID = PWC.EXT_Workpackage_ID 
    where wp.Project_ID=868

    --AND Parent_Workpackage_Code IS NOT NULL

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