Sql In语句只获取第一个结果

Sql In语句只获取第一个结果,sql,Sql,我一直在写一份报告,试图根据工作流程的类型进行筛选。我正在使用Report Builder 3.0创建不同工作流的列表,但我的IN语句只获取第一个工作流,而不是多个工作流。在不使用工作流过滤器的情况下运行SQL将显示多个工作流,但仅在第一个工作流中使用返回 SELECT OH.ord_hdrnumber, OH.ord_refnum, OH.ord_completiondate, OH.ord_billto, BillingRep.R

我一直在写一份报告,试图根据工作流程的类型进行筛选。我正在使用Report Builder 3.0创建不同工作流的列表,但我的IN语句只获取第一个工作流,而不是多个工作流。在不使用工作流过滤器的情况下运行SQL将显示多个工作流,但仅在第一个工作流中使用返回

SELECT OH.ord_hdrnumber, 
       OH.ord_refnum, 
       OH.ord_completiondate, 
       OH.ord_billto,
       BillingRep.Rep,
       OH.ord_totalmiles, 
       OH.ord_revtype1, 
       OH.ord_revtype2, 
       OH.ord_trailer,
       IH.ivh_invoicestatus, 
       p.cty_name AS OrgCity, 
       p.cty_state AS OrgSt, 
       d.cty_name AS DestCity, 
       d.cty_state AS DestSt,
       IH.ivh_totalcharge AS 'Invoice Total', 
       IH.ivh_remark AS 'Remark',
       DetCharges.DET,
       LumpCharges.LUMP,
       LastCarrier.Carrier,
       BOLExistsInSynergize.BOLCount,
       Workflow.WF

FROM orderheader OH WITH (NOLOCK) 
         INNER JOIN city AS p ON OH.ord_origincity = p.cty_code 
         INNER JOIN city AS d WITH (nolock) ON OH.ord_destcity = d.cty_code 
         INNER JOIN Invoiceheader IH With (NoLock) ON IH.ord_hdrnumber = OH.ord_hdrnumber

         -- outer apply's for the sub selects so you only have to do it once
         OUTER APPLY (SELECT SUM(ivd_charge) as DET
                      FROM invoicedetail WITH (nolock)
                      WHERE (ord_hdrnumber = OH.ord_hdrnumber) AND (cht_itemcode IN ('DETDEL', 'DETPU', 'DETD', 'DET' ))) as DetCharges

         OUTER APPLY (SELECT SUM(ivd_charge) as LUMP
                      FROM invoicedetail WITH (nolock)
                      WHERE (ord_hdrnumber = OH.ord_hdrnumber) AND (cht_itemcode IN ('HAND', 'LUMP' ))) AS LumpCharges

         OUTER APPLY (SELECT lh.lgh_carrier AS Carrier
                      FROM legheader lh WITH (NoLock)
                      WHERE lh.lgh_number = (SELECT top 1 s.lgh_number 
                                             FROM stops s with (nolock)
                                             WHERE s.ord_hdrnumber = oh.ord_hdrnumber
                                             ORDER BY s.stp_mfh_sequence desc)) AS LastCarrier

         OUTER APPLY (SELECT COUNT(*) as BOLCount
                      FROM s_SynARXref_Main MN (nolock)
                      WHERE MN.OrderNumber = OH.ord_number
                            AND MN.IN_DocTypeID IN (SELECT DT.IN_DocTypeID 
                                                    FROM s_SynARXref_DocTypes DT (nolock)
                                                    WHERE DT.In_DocTypeName = 'BOL')) AS BOLExistsInSynergize

         OUTER APPLY (SELECT TOP 1 WF.Workflow AS WF
                      FROM s_SynARXref_Main MN (nolock)
                           inner join s_SynARXref_Workflow WF with (nolock) on MN.WorkFlowID$ = WF.WorkFlowID$
                      WHERE MN.OrderNumber = OH.ord_number
                            AND WF.Workflow <> 'Complete'
                            AND MN.IN_DocTypeID IN (SELECT DT.IN_DocTypeID 
                                                     FROM s_SynARXref_DocTypes DT (nolock)
                                                     WHERE DT.In_DocTypeName = 'BOL')) as Workflow

         OUTER APPLY (select TOP 1 d.COL_DATA as Rep
                      from EXTRA_INFO_COLS c
                            inner join EXTRA_INFO_DATA d on c.COL_ID = d.COL_ID
                      where c.COL_NAME = 'Billing Rep'
                            and TABLE_KEY = oh.ord_billto  ) as BillingRep

WHERE (IH.ivh_invoicestatus IN ('HLD', 'HLA'))
         AND (OH.ord_completiondate BETWEEN '20180401' AND '20180501') 
         AND (OH.ord_revtype1 IN ('OTR', 'INT', 'UNK'))
         AND BillingRep.Rep IN ('LAURA', 'RHONDA')
         AND Workflow.WF IN ('Check-In BOL')
ORDER BY OH.ord_hdrnumber,
         OH.ord_refnum

用您正在使用的SQL Server数据库标记您的问题。您的查询在运行时显示列表还是单个结果?如果是一个,也许你应该使用一个外部的APPLY来进行分组,在WHERE子句中引用一个字段,将其有效地转换为一个交叉应用。查看BillingRep和Workflow以澄清:当您注释掉最后一个IN语句时,您的结果集中会有更多行,并且所有其他结果都具有与最后一列Workflow.WF匹配的值。你能确认一下吗?