2015-11-19 71 views
-1

嘿,我想創建一個查詢,以便我可以將每個找到的重複項組合成一個條目。MS SQL 2012查詢結合每個重複的找到的條目

這樣的一個例子是:

Name  | ID | Tag | Address   |carNum 
------------------------------------------------------- 
Bob Barker |2054 |52377 |235 Some road  |9874 
Bill Gates |5630 |69471 |014 Washington Rd. |3700 
Bob Barker |2054 |97011 |235 Some road  |9874 
Bob Barker |2054 |40019 |235 Some road  |9874 
Steve Jobs |8501 |73051 |100 Infinity St. |4901 
John Doe |7149 |86740 |7105 Bull Rd.  |9282 
Bill Gates |5630 |55970 |014 Washington Rd. |3700 
Tim Boons |6370 |60701 |852 Mnt. Creek Rd. |7059 

在上面的例子,鮑勃巴克比爾門都在數據庫中不止一次,所以我想輸出爲以下內容:

Bob Barker|2054|52377/97011/40019  |235 Some road  |9874 
Bill Gates|5630|69471/55970    |014 Washington Rd.|3700 
Steve Jobs|8501|73051     |100 Infinity St. |4901 
John Doe |7149|86740     |7105 Bull Rd.  |9282 
Tim Boons |6370|60701     |852 Mnt. Creek Rd.|7059 

注意如何鮑勃巴克 & 比爾·蓋茨將標記行(複製的數據)附加到一行中,而不是具有多行。 這是因爲我不想檢查以前的ID並查看它是否與當前ID匹配並追加到數據中。

我希望SQL查詢大師會有一個查詢來爲我做這個!

感謝您的時間和幫助!

--------------------------------------------- -------------------------------------------------- -------------------------

問題已經從ACCESS數據庫中更改到MS SQL SERVER 2012數據庫

- -------------------------------------------------- -------------------------------------------------- -------------------

+1

您正在尋找一個聚合字符串連接函數。 MS Access沒有一個。下面是編寫這樣一個函數的一種方法:http://stackoverflow.com/questions/5174362/microsoft-access-condense-multiple-lines-in-a-table/5174843#5174843。 –

+0

distinct關鍵字不可用?從表名 –

+0

中選擇不同的col1,col2 ...我現在要使用MS SQL Server 2012進行查詢,因爲它具有比Access更多的功能。 – StealthRT

回答

0

你可以像這樣做s:

CREATE TABLE MyTable (Name  nvarchar(50) 
         , ID  int 
         , Tag  int 
         , Address nvarchar(50) 
         , carNum int 
         ) 

INSERT INTO MyTable VALUES 
    ('Bob Barker', 2054, 52377, '235 Some road'  , 9874) 
, ('Bill Gates', 5630, 69471, '014 Washington Rd.' , 3700) 
, ('Bob Barker', 2054, 97011, '235 Some road'  , 9874) 
, ('Bob Barker', 2054, 40019, '235 Some road'  , 9874) 
, ('Steve Jobs', 8501, 73051, '100 Infinity St.' , 4901) 
, ('John Doe' , 7149, 86740, '7105 Bull Rd.'  , 9282) 
, ('Bill Gates', 5630, 55970, '014 Washington Rd.' , 3700) 
, ('Tim Boons' , 6370, 60701, '852 Mnt. Creek Rd.' , 7059) 

SELECT YT.Name 
     , ID 
     , LEFT(YT.SUB, LEN(YT.SUB) - 1) AS Tags 
     , Address 
     , carNum 
FROM (SELECT DISTINCT 
       Name 
       , (SELECT  CAST(ST1.Tag AS nvarchar(5)) + ',' AS [text()] 
        FROM  MyTable ST1 
        WHERE  ST1.ID = ST2.ID 
        ORDER BY ST1.Name 
       FOR 
       XML PATH('') 
       ) SUB 
       , ID 
       , Address 
       , carNum 
     FROM MyTable ST2 
     ) YT 

DROP TABLE MyTable 
2

對標記字段使用MySQL GROUP_CONCAT,對名稱字段使用數據分組。

Query: 
SELECT Name, ID, GROUP_CONCAT(Tag SEPARATOR '/') AS Tag, Address, carNum 
FROM users GROUP BY Name 
+0

此查詢是否在Access 2010中工作? – StealthRT

+0

請檢查我的OP更新。 – StealthRT