sql查询从单元格表重建电子表格的行

时间:2012-01-28 02:57:15

标签: tsql sql-server-2008-r2

我从谷歌文档中提取了一组非结构化电子表格,并将它们加载到具有以下结构的数据库中以供进一步分析。

enter image description here

我的目标是从看起来像这样的行开始:

SpreadsheetTitle WorksheetTitle Row Column Value
Copy of updated accounting backup (a-e) Accuquote   3   1   September 2005
Copy of updated accounting backup (a-e) Accuquote   5   2   Rate 
Copy of updated accounting backup (a-e) Accuquote   5   3   # of Sales
Copy of updated accounting backup (a-e) Accuquote   5   4   Total Spent
Copy of updated accounting backup (a-e) Accuquote   6   1   Accuquote
Copy of updated accounting backup (a-e) Accuquote   6   2   $70
Copy of updated accounting backup (a-e) Accuquote   6   3   45
Copy of updated accounting backup (a-e) Accuquote   6   4   $3150
Copy of updated accounting backup (a-e) Accuquote   6   5   PAID

对此:

SpreadsheetTitle WorksheetTitle Row Column1 Column2 Column3.....etc...etc..

我可以通过编写非sql代码来思考如何继续,但我很想知道我是否可以使用递归查询(可能)或者枢轴函数的方法。

1 个答案:

答案 0 :(得分:1)

我不是支点专家:http://msdn.microsoft.com/en-us/library/ms177410.aspx

但是会有这样的工作:

SELECT  SpreadsheetTitle,
        WorksheetTitle,
        row,
        [1] AS Col1,
        [2] AS Col2
FROM    ( SELECT    'spreadsheet' SpreadsheetTitle, 'worksheet' WorksheetTitle, 0 Row, 1 AS [ColumnID], 1 VALUE 
          UNION ALL
          SELECT    'spreadsheet' SpreadsheetTitle, 'worksheet' WorksheetTitle, 0 Row, 2 AS [ColumnID], 2 VALUE 
          UNION ALL
          SELECT    'spreadsheet2' SpreadsheetTitle, 'worksheet' WorksheetTitle, 0 Row, 1 AS [ColumnID], 3 VALUE 
        ) AS flat PIVOT
    ( MAX(Value) FOR [ColumnID] IN ( [1], [2] ) ) AS pivoted