這裏有關SQL方案的另一個愚蠢問題。SQL查詢 - 幾乎像數據透視表一樣?
給出的數據,如:
FieldKey DocumentKey FieldId FieldValue
1 00001c55-aab3-4df8-a07e-8eac162fa075 TITLE Mass Import 18355
2 00001c55-aab3-4df8-a07e-8eac162fa075 1 00001c55-aab3-4df8-a07e-8eac162fa075
3 00001c55-aab3-4df8-a07e-8eac162fa075 2 9F-2F-CF-76-27-E7-5B-C9-27-CE-23-45-68-3F-E2-89
4 00001c55-aab3-4df8-a07e-8eac162fa075 3 18355
5 00001c55-aab3-4df8-a07e-8eac162fa075 4 94-3C-84-B1-6A-AA-FD-25-F1-C0-D2-43-CD-D3-57-D6
6 00001c55-aab3-4df8-a07e-8eac162fa075 5 Created by C# mass import
7 00002205-00D3-4495-B65A-A7B1FD2AE7F2 TITLE Mass Import 1494780
8 00002205-00D3-4495-B65A-A7B1FD2AE7F2 1 00002205-00D3-4495-B65A-A7B1FD2AE7F2
9 00002205-00D3-4495-B65A-A7B1FD2AE7F2 2 870386312
10 00002205-00D3-4495-B65A-A7B1FD2AE7F2 3 1494780
11 00002205-00D3-4495-B65A-A7B1FD2AE7F2 4 -1929051324
13 00002342-6de0-4110-b576-fd32f96b2858 TITLE Mass Import 387008
14 00002342-6de0-4110-b576-fd32f96b2858 1 00002342-6de0-4110-b576-fd32f96b2858
15 00002342-6de0-4110-b576-fd32f96b2858 2 B0-CB-DF-ED-48-DC-C4-E8-B0-6F-1B-1D-81-2D-6D-51
16 00002342-6de0-4110-b576-fd32f96b2858 3 387008
隨着表結構:
[FieldKey] [bigint] IDENTITY(1,1) NOT NULL,
[DocumentKey] [char](36) NOT NULL,
[FieldId] [varchar](10) NOT NULL,
[FieldValue] [varchar](255) NOT NULL
是什麼水平翻轉這個數據的最佳方式?理想的情況是:
DocumentKey TITLE 1 2 3 4 5
00001c55-aab3-4df8-a07e-8eac162fa075 mytitle val1 val2 val3 val4 val5
00002205-00D3-4495-B65A-A7B1FD2AE7F2 mytitle2 val6 val7 val8 val9
00002342-6de0-4110-b576-fd32f96b2858 mytitle3 vl10 vl11 vl12
我認爲數據透視表可能會奏效,它是接近的,但問題是我不需要這是需要一個SQL樞紐匯聚。我只想翻轉數據。列的數量(在我的例子中爲1-5加TITLE)可以是TITLE加1-30之間的任何值。
也許我只是密集,但任何想法,將不勝感激。
我不認爲OP想要一個靜態的支點。如果色譜柱在1-30之間變化,這將不予考慮。 – Arion 2012-03-29 21:33:28
當然,它會 - 添加所有30列,如果列不存在,它將只有一個空值。認爲問題的要點是「......問題是我不需要一個SQL數據透視表所需的聚合,我只是想要翻轉數據。」只需使用MAX功能。 – jim31415 2012-03-29 22:02:25
都是真的:)我們最終可能有超過30列,所以動態是偉大的,雖然在短期內是不必要的。 – Kettch19 2012-03-29 22:11:18