2013-06-12 40 views
1

我有一個包含兩列的Access表:[ID]和[Name]。這裏有超過3000行的數據。目前我已經將表格複製並粘貼到一個.txt文件中,該文件就是它需要的地方。轉換從SQL Server 2008 R2中訪問的數據

的數據的外觀示例:

A0001 esfesef fgrdgdrd 
A0002 fsefgeses 
A0003 safefesf 
A0004 vsdrdsrfgsd 
A0006 adfaasadsa 
A0007 sefse gdsgfd 
A0008 wafregsre grdsgr 
A0009 sdfsfs ffd 
A0010 sfesfe grgrds 
A0011 sdf fsfgdsf 
A0012 esdgf gsg 
A0013 gdrs as gsdfd 
A0014 ddsfgb gtrew asfd 
A0015 ghdssdf 
A0016 sadsaf 
A0017 sjhdhj ahumds shsh 

我需要的編程方式執行下列方式:

  1. 複製每一行,但在插入ID之前/和說明(閉幕標籤)

  2. 包裝每個記錄<>標籤

因此,這是該數據是什麼樣子:

<A0001><esfesef fgrdgdrd> 
</A0001></esfesef fgrdgdrd> 
<A0002><fsefgeses> 
</A0002></fsefgeses> 
<A0003><safefesf> 
</A0003></safefesf> 
<A0004><vsdrdsrfgsd> 
</A0004></vsdrdsrfgsd> 
<A0006><adfaasadsa> 
</A0006></adfaasadsa> 
<A0007><sefse gdsgfd> 
</A0007></sefse gdsgfd> 
<A0008><wafregsre grdsgr> 
</A0008></wafregsre grdsgr> 
<A0009><sdfsfs ffd> 
</A0009></sdfsfs ffd> 
<A0010><sfesfe grgrds> 
</A0010></sfesfe grgrds> 
<A0011><sdf fsfgdsf> 
</A0011></sdf fsfgdsf> 
<A0012><esdgf gsg> 
</A0012></esdgf gsg> 
<A0013><gdrs as gsdfd> 
</A0013></gdrs as gsdfd> 
<A0014><ddsfgb gtrew asfd> 
</A0014></ddsfgb gtrew asfd> 
<A0015><ghdssdf> 
</A0015></ghdssdf> 
<A0016><sadsaf> 
</A0016></sadsaf> 
<A0017><sjhdhj ahumds shsh> 
</A0017></sjhdhj ahumds shsh> 

我可以把數據導入Excel電子表格,並連接到該通過SQL Server 2008 R2進行查詢,然後複製結果出來到.txt(這是數據最終需要駐留的地方)。

有沒有人有任何想法轉換這些數據,所以我不必更新.txt文件中的每個記錄?

+0

如何選擇*,然後將每個循環與每個字段連接爲「「」等等... – Grant

回答

1

你問什麼可以做這樣的:

WITH CTE AS 
(
    SELECT 
    ID, 1 AS RN, '<' + ID + '><' + Name + '>' AS Tag 
    FROM Table1 
    UNION 
    SELECT 
    ID, 2 AS RN, '</' + ID + '></' + Name + '>' AS Tag 
    FROM Table1 
) 
SELECT Tag FROM CTE 
ORDER BY ID,RN 

SQLFiddle DEMO

但是,如果那些是你可能真的想切換在關閉排標籤的順序有效的XML標籤?

WITH CTE AS 
(
    SELECT 
    ID, 1 AS RN, '<' + ID + '><' + Name + '>' AS Tag 
    FROM Table1 
    UNION 
    SELECT 
    ID, 2 AS RN, '</' + Name + '></' + ID + '>' AS Tag 
    FROM Table1 
) 
SELECT Tag FROM CTE 
ORDER BY ID,RN 

SQLFiddle DEMO

此外,單列還可能爲你工作?

SELECT '<' + ID + '><' + Name + '></' + Name + '></' + ID + '>' AS Tag FROM Table1 

SQLFiddle DEMO

1

我不知道你爲什麼想去傾銷數據到Excel,然後在SQL Server處理它,因爲你可以在Access做同樣的事情的權利的麻煩本身:

SELECT lineOut 
FROM 
(
     SELECT ID, 1 AS Seq, "<" & ID & "><" & [Name] & ">" AS lineOut 
     FROM Table1 
    UNION ALL 
     SELECT ID, 2 AS Seq, "</" & [Name] & "></" & ID & ">" AS lineOut 
     FROM Table1 
    ORDER BY 1, 2 
) 

只保存該查詢,然後將其作爲文本文件導出。 (請注意,我交換了結束標記的順序,以使它們匹配正確。)

相關問題