使用IF THEN

时间:2016-07-13 19:02:02

标签: sql-server sql-server-2012

我有一张包含合同和客户地址的表格。 每个地址都有一列声明addresstype(合同或客户) 和另一列合同号或客户编号

现在我想以下列方式选择此表。 查询参数是contract-Number和相应的customer-number

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

如果没有给定合同的合同地址 - 那么 选择相应客户编号的客户地址。

我不知道该怎么做。 可能的?

BR 埃里克

编辑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条记录

BR 埃里克

1 个答案:

答案 0 :(得分:0)

- 1。创建快速临时表

  select CustomerID, max(ObjectType) into #MaxObjects from MyTable --Replace MyTable with whatever your table name is

- 2。基于该表的内部联接到您的原始。

select t1.* from MyTable as t1

内连接#MaxObjects as mo on t1.CustomerID = mo.CustomerID and t1.ObjectType = mo.ObjectType