Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据条件选择记录_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 根据条件选择记录

Sql 根据条件选择记录,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在寻找一种根据标准选择ID(PersonID)的方法。如果这个人不符合标准,我需要选择另一个。为了使其可视化,我有两个表: 一, 二, 我需要找到一种方法,从``table1 withlatestOrder=1中选择ID,检查此人是否符合表2中的标准(任何标准a或B的值为1),然后如果是,从table1 with latestOrder=2中选择ID 并检查条件,只要table1.lastorder>0 这有意义吗?我一直被CASE's和IIF's,CTA's困扰,但我似乎找不到工作的方法。

我正在寻找一种根据标准选择ID(PersonID)的方法。如果这个人不符合标准,我需要选择另一个。为了使其可视化,我有两个表: 一,

二,

我需要找到一种方法,从``table1 with
latestOrder=1
中选择ID,检查此人是否符合表2中的标准(任何标准a或B的值为1),然后如果是,从table1 with latestOrder=2中选择ID

并检查条件,只要table1.lastorder>0

这有意义吗?我一直被CASE's和IIF's,CTA's困扰,但我似乎找不到工作的方法。我希望有人能告诉我,我应该朝哪个方向去

非常感谢大家的帮助!这是第三个版本:(

到目前为止,我的收获如下:

WITH LastOrdered AS  
(
            SELECT 
                OrderBillToID AS PersonID
            ,   OrderDate
            ,   OrderBillToCompanyID AS CompanyID
            ,   OrderBillToCompany
            ,   ROW_NUMBER() OVER(PARTITION BY ODE.OrderBilltoCompanyID ORDER BY ODE.OrderDate DESC) AS LatestOrder
            FROM dbo.OrderDetails ODE
            INNER JOIN dbo.Persons PER ON ODE.OrderBillToID = PER.ID AND PER.Segment = 'B' AND ODE.OrderBillToCompanyID IS NOT NULL

)
第二次尝试

SELECT
 PER.ID
 ,  PER.Company
 ,  LatestOrder
 ,  CASE WHEN PER.ExcludeAll = 0 AND (PER.Age > 17 OR PER.Age = 0) AND PER.DateOfDeath = '1900-01-01' AND PER.TLC = 'NA' AND PER.BulkAskExclude = 0 AND PER.EmailExclude = 0 THEN LastOrder
 ....here is when I realised that this case won't work.....
FROM dbo.Persons PER
  INNER JOIN LastOrdered LO ON LO.PersonID = PER.ID     
预期产出将是:

ID     Company  
10955   TEST    

……基本上,您需要最后一个订购但不满足表2中任何标准的人:

SELECT TOP 1
    id, Company
FROM Table1
WHERE
    id NOT IN(
        SELECT id
        FROM Table2
        WHERE 
            Criteria_A = 1
            OR Criteria_B = 1
    )
ORDER BY LatestOrder DESC

发布您正在尝试的查询以及与您的条件相关的预期输出。谢谢编码器!我已使用查询编辑了帖子您的数据和您的查询甚至不匹配。请发布真实的数据。谢谢!CTA和SELECT是一个查询。出于某种原因,格式将它们分隔开。让我更改以完全匹配我要查找的内容。行表2中有相同的
ID
。这是正确的还是打字错误?
ID     Company  
10955   TEST    
SELECT TOP 1
    id, Company
FROM Table1
WHERE
    id NOT IN(
        SELECT id
        FROM Table2
        WHERE 
            Criteria_A = 1
            OR Criteria_B = 1
    )
ORDER BY LatestOrder DESC