在select

时间:2017-01-04 15:34:00

标签: sql sql-server

我正在创建一个查询,该查询将为每个主键返回一行。问题是在数据库中有另一个我试图加入的表,而在另一个表中,第一个表中的主键可以多次出现,但是有一个代码,用于描述存储在名为的列中的信息类型text_info,用于存储与代码所代表的内容相关的文本。

例如:

PrimaryKey|Code      |text_info
--------------------------------
5555      |1         |1/4/2017
5555      |2         |Approved

我想要的是一个返回类似这样的选择语句。

PrimaryKey|Date      |Status
----------------------------------
5555      |1/4/2017  |Approved

我一直在尝试以各种方式加入这两个表,但我的尝试总是返回多行,我不想要这个查询。任何帮助将非常感谢。

1 个答案:

答案 0 :(得分:3)

我认为一个简单的条件聚合可以解决这个问题。如果您有大量和/或可变数量的代码,则可能必须使用DYNAMIC。

Select PrimaryKey
      ,Date   = max(case when code=1 then text_info else null end)
      ,Status = max(case when code=2 then text_info else null end)
 From  YourTable
 Group By PrimaryKey