【问题标题】:Why is UNION causing ''multi part identifier could not be bound' error为什么 UNION 导致“无法绑定多部分标识符”错误
【发布时间】:2026-02-05 18:25:01
【问题描述】:

我已经阅读了很多关于这个问题的不同问题,但是我仍然无法找到我的代码有什么问题。我已经为此苦苦挣扎了好几天,现在想不出还有什么可以尝试的。 我可以在 SQL 查询窗格中运行整个代码,它会运行并给出预期的结果,但是当放入 SSRS 报告时,会显示“多部分标识符....”错误。如果我将 UNION 报告拆分为 2 个单独的部分,则每个部分都可以加载到 SSRS 报告中而不会显示任何错误。 阅读了以下帖子后,我检查了: The multi-part identifier could not be bound --change Group By--(尝试使用和不使用Order By)

The multi-part identifier could not be bound --隐式和显式连接 --(我认为所有连接都是显式的)

The multi-part identifier could not be bound 检查表命名——(我认为所有表都用别名重命名并正确连接)

我还检查了联合的两半中的所有命名是否相同,所以我很困惑为什么 UNION 会导致错误。

我的代码: (我为篇幅道歉,但很难知道如何简化它并给出问题的真实印象)

--The multi-part identifier "gor.gorec" could not be bound.
--The multi-part identifier "gos.gosent" could not be bound.
--C1 

--all ms 46 completed where same company not counted as output previously--
SELECT        m.ccx_name AS MilestoneName, m.ccx_status, m.ccx_statusname AS MilestoneStatus, proj.ccx_programmename AS Programme, 'C1' AS OutputNumber, proj.ccx_projectnumber AS ProjectNumber, 
                         comp.name AS CompanyName, CASE WHEN comp.tsg_localregionpicklistname IN ('Devon', 'Somerset') 
                         THEN 'Heart of South West' WHEN comp.tsg_localregionpicklistname LIKE 'Isles of Scilly' THEN 'Cornwall' WHEN comp.tsg_localregionpicklistname IN ('Gloucestershire', 'Cornwall', 'Swindon & Wiltshire', 
                         'West of England', 'Dorset') THEN comp.tsg_localregionpicklistname ELSE 'Out of Region' END AS LEPregion, proj.ccx_projectstart AS ProjectStartDate, m.ccx_datecompleted AS AchievedDate, 
                         jsc.fs_anticipatedjobs AS AnticipatedJobs, g.ccx_valueofgrant AS GrantOffer, gor.gorec as GrantOfferReceived, gos.gosent as GrantOfferSent,
                        CASE WHEN gor.gorec = 1 THEN 0
                        WHEN gos.gosent = 1 THEN 1
                        ELSE '' END AS AnticipatedGrant,
                         consult.fullname AS Adviser
FROM               Filteredccx_milestone AS m INNER JOIN
                         Filteredccx_project AS proj ON m.ccx_project = proj.ccx_projectid INNER JOIN
                         FilteredAccount AS comp ON proj.ccx_customerid = comp.accountid LEFT OUTER JOIN
                         Filteredccx_jobscreatedorsafeguarded AS jsc ON proj.ccx_projectid = jsc.ccx_project LEFT OUTER JOIN
                         Filteredccx_grant AS g ON proj.ccx_grantid = g.ccx_grantid LEFT OUTER JOIN
                         Filteredccx_ccx_project_contact_consultant AS link ON proj.ccx_projectid = link.ccx_projectid LEFT OUTER JOIN
                         FilteredContact AS consult ON link.contactid = consult.contactid LEFT OUTER JOIN
                         (select M1.ccx_project,1 as gorec
                                FROM Filteredccx_milestone as M1
                                WHERE (M1.ccx_name LIKE '45b%') AND (M1.ccx_status = '803080001'))AS gor ON gor.ccx_project=proj.ccx_projectid LEFT OUTER JOIN
                         (select M2.ccx_project,1 as gosent
                                FROM Filteredccx_milestone as M2
                                WHERE (M2.ccx_name LIKE '45 Grant%') AND (M2.ccx_status = '803080001')) AS gos ON gos.ccx_project=proj.ccx_projectid

WHERE        (m.ccx_name LIKE '46%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                         (proj.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                         'COMP00077428', 'COMP00077490')) OR
                         (m.ccx_name LIKE '46%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                         (proj.ccx_programme = '14286237-FE36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                         'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                             (SELECT        FilteredAccount.accountid
                               FROM            Filteredccx_milestone INNER JOIN
                                                         Filteredccx_project ON Filteredccx_milestone.ccx_project = Filteredccx_project.ccx_projectid INNER JOIN
                                                         FilteredAccount ON Filteredccx_project.ccx_customerid = FilteredAccount.accountid
                               WHERE        (Filteredccx_milestone.ccx_name LIKE '46%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                         (Filteredccx_project.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone.ccx_name LIKE '46%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                         (Filteredccx_project.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone.ccx_name LIKE '45b%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                         (Filteredccx_project.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                         (Filteredccx_milestone.ccx_name LIKE '45b%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                         (Filteredccx_project.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone.ccx_name LIKE '45b%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                         (Filteredccx_project.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209')))
UNION
SELECT        m.ccx_name AS MilestoneName, m.ccx_status, m.ccx_statusname AS MilestoneStatus, proj.ccx_programmename AS Programme, 'C1' AS OutputNumber, proj.ccx_projectnumber AS ProjectNumber, 
                         comp.name AS CompanyName, CASE WHEN comp.tsg_localregionpicklistname IN ('Devon', 'Somerset') 
                         THEN 'Heart of South West' WHEN comp.tsg_localregionpicklistname LIKE 'Isles of Scilly' THEN 'Cornwall' WHEN comp.tsg_localregionpicklistname IN ('Gloucestershire', 'Cornwall', 'Swindon & Wiltshire', 
                         'West of England', 'Dorset') THEN comp.tsg_localregionpicklistname ELSE 'Out of Region' END AS LEPregion, proj.ccx_projectstart AS ProjectStartDate, m.ccx_datecompleted AS AchievedDate, 
                         jsc.fs_anticipatedjobs AS AnticipatedJobs, g.ccx_valueofgrant AS GrantOffer, gor.gorec as GrantOfferReceived, gos.gosent as GrantOfferSent,
                        CASE WHEN gor.gorec = 1 THEN 0
                        WHEN gos.gosent = 1 THEN 1
                        ELSE '' END AS AnticipatedGrant, 
                          consult.fullname AS Adviser
FROM               Filteredccx_milestone AS m INNER JOIN
                         Filteredccx_project AS proj ON m.ccx_project = proj.ccx_projectid INNER JOIN
                         FilteredAccount AS comp ON proj.ccx_customerid = comp.accountid LEFT OUTER JOIN
                         Filteredccx_jobscreatedorsafeguarded AS jsc ON proj.ccx_projectid = jsc.ccx_project LEFT OUTER JOIN
                         Filteredccx_grant AS g ON proj.ccx_grantid = g.ccx_grantid LEFT OUTER JOIN
                         Filteredccx_ccx_project_contact_consultant AS link ON proj.ccx_projectid = link.ccx_projectid LEFT OUTER JOIN
                         FilteredContact AS consult ON link.contactid = consult.contactid LEFT OUTER JOIN

                        (select M1.ccx_project,1 as gorec
                                FROM Filteredccx_milestone as M1
                                WHERE (M1.ccx_name LIKE '45b%') AND (M1.ccx_status = '803080001'))AS gor ON gor.ccx_project=proj.ccx_projectid LEFT OUTER JOIN

                         (select M2.ccx_project,1 as gosent
                                FROM Filteredccx_milestone as M2
                                WHERE (M2.ccx_name LIKE '45 Grant%') AND (M2.ccx_status = '803080001')) AS gos ON gos.ccx_project=proj.ccx_projectid

WHERE        (m.ccx_name LIKE '45b%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                         (proj.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                         'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                             (SELECT        FilteredAccount_3.accountid
                               FROM            Filteredccx_milestone AS Filteredccx_milestone_3 INNER JOIN
                                                         Filteredccx_project AS Filteredccx_project_3 ON Filteredccx_milestone_3.ccx_project = Filteredccx_project_3.ccx_projectid INNER JOIN
                                                         FilteredAccount AS FilteredAccount_3 ON Filteredccx_project_3.ccx_customerid = FilteredAccount_3.accountid
                               WHERE        (Filteredccx_milestone_3.ccx_name LIKE '46%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_3.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_3.ccx_name LIKE '46%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_3.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_3.ccx_name LIKE '45b%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_3.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                         (Filteredccx_milestone_3.ccx_name LIKE '45b%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_3.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_3.ccx_name LIKE '45b%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_3.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209'))) OR

                         (m.ccx_name LIKE '45b%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                         (proj.ccx_programme = '14286237-FE36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                         'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                             (SELECT        FilteredAccount_2.accountid
                               FROM            Filteredccx_milestone AS Filteredccx_milestone_2 INNER JOIN
                                                         Filteredccx_project AS Filteredccx_project_2 ON Filteredccx_milestone_2.ccx_project = Filteredccx_project_2.ccx_projectid INNER JOIN
                                                         FilteredAccount AS FilteredAccount_2 ON Filteredccx_project_2.ccx_customerid = FilteredAccount_2.accountid
                               WHERE        (Filteredccx_milestone_2.ccx_name LIKE '46%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_2.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_2.ccx_name LIKE '46%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_2.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_2.ccx_name LIKE '45b%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_2.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                         (Filteredccx_milestone_2.ccx_name LIKE '45b%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_2.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_2.ccx_name LIKE '45b%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_2.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209'))) OR

                         (m.ccx_name LIKE '45b%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                         (proj.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                         'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                             (SELECT        FilteredAccount_1.accountid
                               FROM            Filteredccx_milestone AS Filteredccx_milestone_1 INNER JOIN
                                                         Filteredccx_project AS Filteredccx_project_1 ON Filteredccx_milestone_1.ccx_project = Filteredccx_project_1.ccx_projectid INNER JOIN
                                                         FilteredAccount AS FilteredAccount_1 ON Filteredccx_project_1.ccx_customerid = FilteredAccount_1.accountid
                               WHERE        (Filteredccx_milestone_1.ccx_name LIKE '46%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_1.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_1.ccx_name LIKE '46%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_1.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_1.ccx_name LIKE '45b%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_1.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                         (Filteredccx_milestone_1.ccx_name LIKE '45b%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_1.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                         (Filteredccx_milestone_1.ccx_name LIKE '45b%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                         (Filteredccx_project_1.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209')))
ORDER BY CompanyName

【问题讨论】:

    标签: sql-server visual-studio-2010 reporting-services


    【解决方案1】:

    当您有两个(或更多)列同名时,通常会出现此错误。 SSMS 可以处理,但 SSRS 不能。看起来您有两列称为预期授权(尽管可能误读了 SQL)尝试调用一个预期授权 2 并对任何其他重复的列名执行相同操作,看看是否有效。

    【讨论】:

    • 谢谢@tomdemaine。恐怕我不是 SQL 专家,但我认为在这种情况下,由于两个 select 子句之间有一个 UNION,我应该给它们起相同的名称。第二个 select 子句中的所有字段都具有与第一个 select 子句中相同的别名。如果我用不同的别名命名所有第二个 select 子句,UNION 会起作用吗?
    • 谢谢你,因为你让我觉得也许我可以在没有第二个选择子句的情况下做到这一点
    • 确实在这种情况下,SSRS 无法刷新字段,因为列名/别名重复。非常好的tomdemaine!
    【解决方案2】:

    创建为视图并让 SSRS 使用它;

    create view YourData
    
    as
    
    SELECT        m.ccx_name AS MilestoneName, m.ccx_status, m.ccx_statusname AS MilestoneStatus, proj.ccx_programmename AS Programme, 'C1' AS OutputNumber, proj.ccx_projectnumber AS ProjectNumber, 
                             comp.name AS CompanyName, CASE WHEN comp.tsg_localregionpicklistname IN ('Devon', 'Somerset') 
                             THEN 'Heart of South West' WHEN comp.tsg_localregionpicklistname LIKE 'Isles of Scilly' THEN 'Cornwall' WHEN comp.tsg_localregionpicklistname IN ('Gloucestershire', 'Cornwall', 'Swindon & Wiltshire', 
                             'West of England', 'Dorset') THEN comp.tsg_localregionpicklistname ELSE 'Out of Region' END AS LEPregion, proj.ccx_projectstart AS ProjectStartDate, m.ccx_datecompleted AS AchievedDate, 
                             jsc.fs_anticipatedjobs AS AnticipatedJobs, g.ccx_valueofgrant AS GrantOffer, gor.gorec as GrantOfferReceived, gos.gosent as GrantOfferSent,
                            CASE WHEN gor.gorec = 1 THEN 0
                            WHEN gos.gosent = 1 THEN 1
                            ELSE '' END AS AnticipatedGrant,
                             consult.fullname AS Adviser
    FROM               Filteredccx_milestone AS m INNER JOIN
                             Filteredccx_project AS proj ON m.ccx_project = proj.ccx_projectid INNER JOIN
                             FilteredAccount AS comp ON proj.ccx_customerid = comp.accountid LEFT OUTER JOIN
                             Filteredccx_jobscreatedorsafeguarded AS jsc ON proj.ccx_projectid = jsc.ccx_project LEFT OUTER JOIN
                             Filteredccx_grant AS g ON proj.ccx_grantid = g.ccx_grantid LEFT OUTER JOIN
                             Filteredccx_ccx_project_contact_consultant AS link ON proj.ccx_projectid = link.ccx_projectid LEFT OUTER JOIN
                             FilteredContact AS consult ON link.contactid = consult.contactid LEFT OUTER JOIN
                             (select M1.ccx_project,1 as gorec
                                    FROM Filteredccx_milestone as M1
                                    WHERE (M1.ccx_name LIKE '45b%') AND (M1.ccx_status = '803080001'))AS gor ON gor.ccx_project=proj.ccx_projectid LEFT OUTER JOIN
                             (select M2.ccx_project,1 as gosent
                                    FROM Filteredccx_milestone as M2
                                    WHERE (M2.ccx_name LIKE '45 Grant%') AND (M2.ccx_status = '803080001')) AS gos ON gos.ccx_project=proj.ccx_projectid
    
    WHERE        (m.ccx_name LIKE '46%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                             (proj.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                             'COMP00077428', 'COMP00077490')) OR
                             (m.ccx_name LIKE '46%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                             (proj.ccx_programme = '14286237-FE36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                             'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                                 (SELECT        FilteredAccount.accountid
                                   FROM            Filteredccx_milestone INNER JOIN
                                                             Filteredccx_project ON Filteredccx_milestone.ccx_project = Filteredccx_project.ccx_projectid INNER JOIN
                                                             FilteredAccount ON Filteredccx_project.ccx_customerid = FilteredAccount.accountid
                                   WHERE        (Filteredccx_milestone.ccx_name LIKE '46%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                             (Filteredccx_project.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone.ccx_name LIKE '46%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                             (Filteredccx_project.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone.ccx_name LIKE '45b%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                             (Filteredccx_project.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                             (Filteredccx_milestone.ccx_name LIKE '45b%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                             (Filteredccx_project.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone.ccx_name LIKE '45b%') AND (Filteredccx_milestone.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone.ccx_status = '803080001') AND 
                                                             (Filteredccx_project.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209')))
    UNION
    SELECT        m.ccx_name AS MilestoneName, m.ccx_status, m.ccx_statusname AS MilestoneStatus, proj.ccx_programmename AS Programme, 'C1' AS OutputNumber, proj.ccx_projectnumber AS ProjectNumber, 
                             comp.name AS CompanyName, CASE WHEN comp.tsg_localregionpicklistname IN ('Devon', 'Somerset') 
                             THEN 'Heart of South West' WHEN comp.tsg_localregionpicklistname LIKE 'Isles of Scilly' THEN 'Cornwall' WHEN comp.tsg_localregionpicklistname IN ('Gloucestershire', 'Cornwall', 'Swindon & Wiltshire', 
                             'West of England', 'Dorset') THEN comp.tsg_localregionpicklistname ELSE 'Out of Region' END AS LEPregion, proj.ccx_projectstart AS ProjectStartDate, m.ccx_datecompleted AS AchievedDate, 
                             jsc.fs_anticipatedjobs AS AnticipatedJobs, g.ccx_valueofgrant AS GrantOffer, gor.gorec as GrantOfferReceived, gos.gosent as GrantOfferSent,
                            CASE WHEN gor.gorec = 1 THEN 0
                            WHEN gos.gosent = 1 THEN 1
                            ELSE '' END AS AnticipatedGrant, 
                              consult.fullname AS Adviser
    FROM               Filteredccx_milestone AS m INNER JOIN
                             Filteredccx_project AS proj ON m.ccx_project = proj.ccx_projectid INNER JOIN
                             FilteredAccount AS comp ON proj.ccx_customerid = comp.accountid LEFT OUTER JOIN
                             Filteredccx_jobscreatedorsafeguarded AS jsc ON proj.ccx_projectid = jsc.ccx_project LEFT OUTER JOIN
                             Filteredccx_grant AS g ON proj.ccx_grantid = g.ccx_grantid LEFT OUTER JOIN
                             Filteredccx_ccx_project_contact_consultant AS link ON proj.ccx_projectid = link.ccx_projectid LEFT OUTER JOIN
                             FilteredContact AS consult ON link.contactid = consult.contactid LEFT OUTER JOIN
    
                            (select M1.ccx_project,1 as gorec
                                    FROM Filteredccx_milestone as M1
                                    WHERE (M1.ccx_name LIKE '45b%') AND (M1.ccx_status = '803080001'))AS gor ON gor.ccx_project=proj.ccx_projectid LEFT OUTER JOIN
    
                             (select M2.ccx_project,1 as gosent
                                    FROM Filteredccx_milestone as M2
                                    WHERE (M2.ccx_name LIKE '45 Grant%') AND (M2.ccx_status = '803080001')) AS gos ON gos.ccx_project=proj.ccx_projectid
    
    WHERE        (m.ccx_name LIKE '45b%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                             (proj.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                             'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                                 (SELECT        FilteredAccount_3.accountid
                                   FROM            Filteredccx_milestone AS Filteredccx_milestone_3 INNER JOIN
                                                             Filteredccx_project AS Filteredccx_project_3 ON Filteredccx_milestone_3.ccx_project = Filteredccx_project_3.ccx_projectid INNER JOIN
                                                             FilteredAccount AS FilteredAccount_3 ON Filteredccx_project_3.ccx_customerid = FilteredAccount_3.accountid
                                   WHERE        (Filteredccx_milestone_3.ccx_name LIKE '46%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_3.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_3.ccx_name LIKE '46%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_3.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_3.ccx_name LIKE '45b%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_3.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                             (Filteredccx_milestone_3.ccx_name LIKE '45b%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_3.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_3.ccx_name LIKE '45b%') AND (Filteredccx_milestone_3.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_3.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_3.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209'))) OR
    
                             (m.ccx_name LIKE '45b%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                             (proj.ccx_programme = '14286237-FE36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                             'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                                 (SELECT        FilteredAccount_2.accountid
                                   FROM            Filteredccx_milestone AS Filteredccx_milestone_2 INNER JOIN
                                                             Filteredccx_project AS Filteredccx_project_2 ON Filteredccx_milestone_2.ccx_project = Filteredccx_project_2.ccx_projectid INNER JOIN
                                                             FilteredAccount AS FilteredAccount_2 ON Filteredccx_project_2.ccx_customerid = FilteredAccount_2.accountid
                                   WHERE        (Filteredccx_milestone_2.ccx_name LIKE '46%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_2.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_2.ccx_name LIKE '46%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_2.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_2.ccx_name LIKE '45b%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_2.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                             (Filteredccx_milestone_2.ccx_name LIKE '45b%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_2.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_2.ccx_name LIKE '45b%') AND (Filteredccx_milestone_2.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_2.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_2.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209'))) OR
    
                             (m.ccx_name LIKE '45b%') AND (m.ccx_datecompleted BETWEEN '2017/04/01' AND '2017/07/01') AND (m.ccx_status = '803080001') AND 
                             (proj.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') AND (comp.tsg_companyuid NOT IN ('COMP00153968', 'COMP00091748', 'COMP00091284', 'COMP00177586', 'COMP00231427', 
                             'COMP00077428', 'COMP00077490')) AND (comp.accountid NOT IN
                                 (SELECT        FilteredAccount_1.accountid
                                   FROM            Filteredccx_milestone AS Filteredccx_milestone_1 INNER JOIN
                                                             Filteredccx_project AS Filteredccx_project_1 ON Filteredccx_milestone_1.ccx_project = Filteredccx_project_1.ccx_projectid INNER JOIN
                                                             FilteredAccount AS FilteredAccount_1 ON Filteredccx_project_1.ccx_customerid = FilteredAccount_1.accountid
                                   WHERE        (Filteredccx_milestone_1.ccx_name LIKE '46%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_1.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_1.ccx_name LIKE '46%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_1.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_1.ccx_name LIKE '45b%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_1.ccx_programme = 'D8943876-545A-E711-80FE-0050569FE3BD') OR
                                                             (Filteredccx_milestone_1.ccx_name LIKE '45b%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_1.ccx_programme = '14286237-FE36-E611-8870-005056A52209') OR
                                                             (Filteredccx_milestone_1.ccx_name LIKE '45b%') AND (Filteredccx_milestone_1.ccx_datecompleted < '2017/04/01') AND (Filteredccx_milestone_1.ccx_status = '803080001') AND 
                                                             (Filteredccx_project_1.ccx_programme = '04D0B1DF-FD36-E611-8870-005056A52209')))
    

    我建议这样做是因为您说如果在 SSRS 之外运行 SQL 可以正常工作。 SSRS 可能是语法问题,因此使用视图应该可以消除 SSRS 的复杂性。

    【讨论】:

    • 不幸的是,这不起作用 - 我得到一个不同的错误 - 关键字“视图”附近的语法不正确。 'go' 附近的语法不正确。不确定这是否是由于权限问题,因为我也无法在 SQL 查询窗格中创建视图
    • @CarolineAllen 澄清一下;如果您运行在“问题”部分中发布的 SQL。会运行吗?
    • @CarolineAllen 尝试修改上面的示例
    • @CarolineAllen 1 更多澄清; [1] 在 SQL 中创建上面的视图。 [2]。 SSRS 应该很简单;从YourData中选择*
    • SSRS 不是问题,而是查询。将查询封装在视图中不会改变任何内容
    【解决方案3】:

    感谢大家的回复。 @tomdemaine 的回复让我觉得也许我可以摆脱第二个选择子句并使用 OR 而不是 UNION 并且由于某种原因已经奏效,查询现在在 SSRS 以及 SQL 查询窗格中运行,并且虽然它是一个很长的 WHERE 子句,但它在 13 秒内运行,这是可以接受的。

    【讨论】:

      最近更新 更多