2013-12-10 116 views
0

sql可以做到這一點嗎?SQL GROUP_CONCAT WITH EDIT TEXT

Before       After 
+++++++++++++++++  +++++++++++++++++++++ 
+ ID | ID2 +  + ID | ID2  + 
+++++++++++++++++  +++++++++++++++++++++ 
+ 1 | A  +  + 1 | A-1,B-2,C-1 + 
+ 1 | B  +  + 2 | A-1,B-2  + 
+ 2 | A  +  + 3 | C-1   + 
+ 3 | C  +  +++++++++++++++++++++ 
+ 1 | B  + 
+ 2 | B  + 
+ 1 |   + 
+ 2 | B  + 
+ 2 | C  + 
+++++++++++++++++
+4

歡迎堆棧溢出!我猜你在引用'group_concat'的時候指的是MySQL,但是請通過添加適當的標記(Oracle,SQL Server,MySQL等)來指定您要定位的RDBMS。可能會有利用不被普遍支持的語言或產品功能的答案。此外,通過使用特定的RDBMS標記它,您的問題可能會得到更適合回答的人的關注。 – Taryn

回答

2

您沒有指定您所使用的數據庫,但使這個答案假設你正在使用MySQL,你引用了MySQL GROUP_CONCAT功能。

看來,你想要做的兩件事情:

  1. 生成每個ID/ID2組合的計數和串聯這些值在一起。
  2. 集團那些對ID2和計數爲基礎的ID

第一步我會採取將得到計數每個id/id2組合一個字符串:

select id, 
    id2, 
    count(*) Total 
from yourtable 
group by id, id2 

Demo。一旦你有了這個值,那麼你可以同時使用group_concat功能和concat函數來創建最終的結果是:

select 
    id, 
    group_concat(concat(ID2, '-', Total) ORDER BY ID2 SEPARATOR ',') ID2 
from 
(
    select id, 
    id2, 
    count(*) Total 
    from yourtable 
    group by id, id2 
) d 
group by id; 

SQL Fiddle with Demo

+0

感謝reply.Yes,我正在使用MySQL.I已嘗試編碼,但空數據將顯示' - '。如何做到這一點?如果我想忽略空的數據。 – user3085204

+0

@ user3085204你是這個意思嗎? - http://sqlfiddle.com/#!2/ee089/3 – Taryn

+0

是的,你是對的。非常感謝 – user3085204