如何根据SQL中的4个以上唯一标识符将30列压缩为1列?

时间:2017-07-19 20:01:06

标签: sql sas

例如,我创建的当前表,我创建了拉取列并根据另一个表重命名它们,目前看起来像这样:

ID1 | ID2 | Date_1 | Date_2 | ExternalJob 5 | JobIssue 1...|JobIssue30|

我想达到只有一个JobIssue列,其中JobIssues 1-30垂直而不是水平,基本上是扁平数据。

我尝试过的方法是pivot和join,但到目前为止没有运气,因为我必须将它们分组为多个特定的ID1,ID2,Date_1,Date_2和ExternalJob 5.

所以有很多细节,有些工作只能有1个问题代码,但最多可达30个。

在一天结束时,我希望有一张类似的表:

ID1 | ID2 | Date_1  | Date_2  | ExternalJob 5 | JobIssue
ID1 | ID2 | Date_1  | Date_2  | ExternalJob 5 | JobIssue
ID1 | ID2 | Date_1  | Date_2  | ExternalJob 5 | JobIssue
ID3 | ID5 | Date_23 | Date_45 | ExternalJob 7 | JobIssue
ID1 | ID2 | Date_10 | Date_20 | ExternalJob 2 | JobIssue
ID1 | ID4 | Date_1  | Date_2  | ExternalJob 9 | JobIssue
ID3 | ID4 | Date_17 | Date_6  | ExternalJob 5 | JobIssue

使用JobIssue提取其唯一标识符

JobIssues都是一个最终从.txt文件分隔的字符串。

1 个答案:

答案 0 :(得分:1)

@Joyce L
您需要做的是UNPIVOT

  

Pivot / Unpivot文档:https://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396

PIVOT是你想要将行放入列中的时候,尽管你正试图做相反的事情,这就是所谓的UNPIVOT。

尝试一下,让我们知道它是怎么回事。