简体   繁体   English

需要在Access 2010中创建一个查询,该查询是SQL Server 2008后端的前端

[英]Need to Create a Query in Access 2010 that is a front end for SQL Server 2008 backend

Access 2010 Query Builder Access 2010查询生成器

I need a query or expression in a query criteria to show only OrderID 's where all SampleID 's in that order have a ResultStatus of 3 我需要查询条件中的查询或表达式以仅显示OrderID ,其中该订单中的所有 SampleIDResultStatus为3

OrderID    SampleNumber    ResultStatus     Test
-------------------------------------------------
171178      171178-01      3              PH
171178      171178-01      3              Salt
171178      171178-01      0              HM
171300      171300-02      3              Salt
171308      171308-01      3              PH
171308      171308-01      3              HM
  • OrderID - 171178 Should not Show because SampleID 171178-01 Test HM has a ResultStatus of 0 OrderID-171178不应显示,因为SampleID 171178-01 Test HM的ResultStatus为0
  • OrderID - 171300 Should Show 订单ID-171300应该显示
  • OrderID - 1713088 Should Show OrderID-1713088应该显示

I have searched the web for days but can't seem to state it in a way that gets results. 我已经在网上搜索了好几天,但似乎无法以获取结果的方式进行陈述。 Any help would be greatly appreciated. 任何帮助将不胜感激。 Thank you 谢谢

This is want I finally came up with that works: 这是我最终想出的方法:

SELECT DISTINCT Customers.CustomerName
                , SampleDetails.OrderID
                , SampleDetails.SampleNumber
                , Orders.DefaultReceiveDate
                , SampleDetails.Matrix
                , SampleDetails.Test
                , SampleDetails.Method
                , SampleDetails.CustomerTestPrice
                , Results.ResultStatus
  FROM Results
       INNER JOIN (((SampleDetails
                     LEFT JOIN Invoices
                            ON SampleDetails.OrderID = Invoices.OrderID)
                    INNER JOIN Orders
                            ON SampleDetails.OrderID = Orders.OrderID)
                   INNER JOIN Customers
                           ON Orders.CustomerID = Customers.CustomerID)
               ON Results.OrderID = SampleDetails.OrderID
 GROUP BY Customers.CustomerName
          , SampleDetails.OrderID
          , SampleDetails.SampleNumber
          , Orders.DefaultReceiveDate
          , SampleDetails.Matrix
          , SampleDetails.Test
          , SampleDetails.Method
          , Results.ResultStatus
          , SampleDetails.CustomerTestPrice
          , Invoices.InvoiceID
          , Results.ApprovedDate
          , Orders.CustomerID
          , SampleDetails.Cancelled
HAVING ( ( ( Orders.DefaultReceiveDate ) > [Enter the start date:] )
         AND ( ( Invoices.InvoiceID ) IS NULL )
         AND ( ( Results.ApprovedDate ) IS NOT NULL )
         AND ( ( Orders.CustomerID ) IS NOT NULL
               AND ( Orders.CustomerID ) NOT LIKE "AFL*" )
         AND ( ( SampleDetails.Cancelled ) = False )
         AND ( SUM(IIF([ResultStatus] = 3, 0, 1)) ) = 0 )
 ORDER BY Customers.CustomerName; 

Assuming that ResultStatus cannot be null and that the table is called Orders, you could say: 假设ResultStatus不能为null,并且该表称为Orders,则可以这样说:

SELECT Orders.OrderID, Orders.SampleNumber, Orders.ResultStatus, Orders.Test
FROM Orders
WHERE Orders.OrderID Not In (SELECT OrderId FROM Orders WHERE ResultStatus <> 3)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM