SQL Query数据透视方法帮助

时间:2012-01-16 16:20:03

标签: sql sql-server-2005 pivot

我真的在努力与这个支点,并希望伸出援助和启蒙可能会有所帮助。

说我有下表.... 表A

type      actId date        rowSort   order value   value_char  colName
------------------------------------------------------------------------------------
checking  1003   2011-12-31  2          1   44      44          Amount
checking  1003   2011-12-31  2          2   55      55          Interest
checking  1003   2011-12-31  2          3   66      66          Change
checking  1003   2011-12-31  2          4   77      77          Target
checking  1003   2011-12-31  2          5   88      88          Spread
savings   23456  2011-12-31  1          1   999     999         Amount
savings   23456  2011-12-31  1          2   888     888         Interest
savings   23456  2011-12-31  1          3   777     777         Change
savings   23456  2011-12-31  1          4   666     666         Target
savings   23456  2011-12-31  1          5   555     555         Spread

我想转换到表b

checking  chkId date        rowSort   order chkvalue  chkValchar  colName  savings   savId  savVal  savValChar
-------------------------------------------------------------------------------------------------------------------
checking  1003   2011-12-31  2          1   44        44          Amount    savings   23456  999          999           
checking  1003   2011-12-31  2          2   55        55          Interest  savings   23456  888          888           
checking  1003   2011-12-31  2          3   66        66          Change    savings   23456  777          777
checking  1003   2011-12-31  2          4   77        77          Target    savings   23456  666          666
checking  1003   2011-12-31  2          5   88        88          Spread    savings   23456  555          555

我可以承认,目前这超出了我的技能 我相信我需要在这个表上使用rowSort(识别储蓄与检查)以及使用订单列进行排序。这可能是错的,这就是我在这里的原因。

枢轴是正确的方法吗?我是否正确地认为我的支点是使用聚合最大值(rowSort)?

2 个答案:

答案 0 :(得分:0)

假设来自rowSort的{​​{1}} `checking equal to rowSort+1以及savings之间的行链接,我们应该这样做:

field value

答案 1 :(得分:0)

根据您提出的要求,您不会使用PIVOT进行此查询,您需要JOIN您自己的表格。下面的查询应该为您提供所需的记录,而无需使用DISTINCT

select c.type as checking
    , c.actId as chkid
    , c.date
    , c.rowsort
    , c.[order]
    , c.value as chkvalue
    , c.value_char as chkValchar
    , c.colName
    , s.type as savings
    , s.actId as savId
    , s.value as savVal
    , s.value_char as savValchar
from t1 c
inner join t1 s
    on c.rowsort = s.rowsort + 1
    and c.[order] = s.[order]

请参阅SQL Fiddle with Demo