我从谷歌文档中提取了一组非结构化电子表格,并将它们加载到具有以下结构的数据库中以供进一步分析。
我的目标是从看起来像这样的行开始:
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代码来思考如何继续,但我很想知道我是否可以使用递归查询(可能)或者枢轴函数的方法。
答案 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