Sql server 选择一个带有IF-THEN的表
我有一张表,上面有合同和客户的地址。 每个地址都有一列声明地址类型(合同或客户) 和另一列带有合同编号或客户编号 现在我想用下面的方法选择这个表。 查询参数为合同号和对应的客户号 如果给定合同编号有合同地址,则选择它们 如果此合同编号和相应的客户编号也有 客户地址不选择它们 如果给定合同编号没有合同地址,则 为相应的客户编号选择客户地址 我不知道该怎么做。 可能吗 溴 埃里克 编辑2016/07/14: 随后,对上述问题进行了一些澄清。 给出了下表Sql server 选择一个带有IF-THEN的表,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有一张表,上面有合同和客户的地址。 每个地址都有一列声明地址类型(合同或客户) 和另一列带有合同编号或客户编号 现在我想用下面的方法选择这个表。 查询参数为合同号和对应的客户号 如果给定合同编号有合同地址,则选择它们 如果此合同编号和相应的客户编号也有 客户地址不选择它们 如果给定合同编号没有合同地址,则 为相应的客户编号选择客户地址 我不知道该怎么做。 可能吗 溴 埃里克 编辑2016/07/14: 随后,对上述问题进行了一些澄清。 给出了下表 CustomerID ObjectType
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条记录
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是的,这是可能的。如果你想要更详细的回复,你需要提供更多的细节。这是一个很好的起点。请张贴相关方案