Sql server 选择一个带有IF-THEN的表

Sql server 选择一个带有IF-THEN的表,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有一张表,上面有合同和客户的地址。 每个地址都有一列声明地址类型(合同或客户) 和另一列带有合同编号或客户编号 现在我想用下面的方法选择这个表。 查询参数为合同号和对应的客户号 如果给定合同编号有合同地址,则选择它们 如果此合同编号和相应的客户编号也有 客户地址不选择它们 如果给定合同编号没有合同地址,则 为相应的客户编号选择客户地址 我不知道该怎么做。 可能吗 溴 埃里克 编辑2016/07/14: 随后,对上述问题进行了一些澄清。 给出了下表 CustomerID ObjectType

我有一张表,上面有合同和客户的地址。 每个地址都有一列声明地址类型(合同或客户) 和另一列带有合同编号或客户编号

现在我想用下面的方法选择这个表。 查询参数为合同号和对应的客户号

如果给定合同编号有合同地址,则选择它们 如果此合同编号和相应的客户编号也有 客户地址不选择它们

如果给定合同编号没有合同地址,则 为相应的客户编号选择客户地址

我不知道该怎么做。 可能吗

溴 埃里克

编辑2016/07/14:

随后,对上述问题进行了一些澄清。 给出了下表

CustomerID  ObjectType  ObjectID    ADDR1   ADDR2   ADDR3 .....
10000       1           10000       ssdf    34543   dfgdf   
10000       1           10000       dfgg    kjh     jkhjkh
10000       2           23212       kljklj  lkjlkj  lkjlkj
10000       2           23213       kljklj  lkjlkj  lkjlkj
10001       1           10001       ssdf    34543   dfgdf   
10001       1           10001       dfgg    kjh     jkhjkh
10001       2           23212       kljklj  lkjlkj  lkjlkj
10001       2           23213       kljklj  lkjlkj  lkjlkj
10002       1           10001       ssdf    34543   dfgdf   
10002       1           10001       dfgg    kjh     jkhjkh
当我在此表上进行选择时,我希望每个CustomerID只包含ObjectType=2的记录

如果没有ObjectType=2的记录集,则select必须返回ObjectType=1的所有记录集

我希望现在这是可以理解的

例如:

  • CustomerID=10000应为ObjectType=2返回2条记录
  • CustomerID=10002应为ObjectType=1返回2条记录
溴 埃里克--1。创建一个快速临时表

  select CustomerID, max(ObjectType) into #MaxObjects from MyTable --Replace MyTable with whatever your table name is
--二,。基于该表的内部连接到原始表

select t1.* from MyTable as t1

内部连接#MaxObjects作为t1.CustomerID=mo.CustomerID和t1.ObjectType=mo.ObjectType上的mo

这适用于MSSQL-2012是的,这是可能的。如果你想要更详细的回复,你需要提供更多的细节。这是一个很好的起点。请张贴相关方案