【问题标题】:How to get one column data in one field [duplicate]如何在一个字段中获取一列数据[重复]
【发布时间】:2016-03-18 09:45:24
【问题描述】:

我有一张这样的桌子

| Name | Address | (Column Name)
| rakesh  | ashok nagar |
| mahesh  | ashok nagar |
| rajesh  | ashok nagar |
| rakesh1 | ashok nagar |
| rakesh2 | ashok nagar |
| rakesh4 | mayur vihar  |
| rakesh5 | laxmi nahar  |
| rakesh6 | laxmi nahar  |
| rakesh7 | laxmi nahar1 |
| rakesh8 | laxmi nahar1 |

我需要这样的数据

+-------------+--------------+---------+
| count(name) | Address      | Name |
+-------------+--------------+---------+
|           5 | ashok nahgar | rakesh,mahesh,rajesh,rakesh1,rakesh2|
|           2 | laxmi nahar  | rakesh5,rakesh5|
|           2 | laxmi nahar1 | rakesh7,rakesh8 |
|           1 | mayur vihar  | rakesh4 |
+-------------+--------------+---------+

我可以使用临时表获得相同的结果,但我需要使用单行查询获得相同的结果。

有可能吗?

【问题讨论】:

  • 请不要用多个数据库产品标记您的问题,除非您确实需要独立于平台的解决方案。这似乎不是您想要的,因为您选择了一个仅适用于 Oracle RDBMS 的解决方案。

标签: mysql sql sql-server oracle


【解决方案1】:
You have tagged oracle.  So we have Listagg function in oracle helps you to do this.

select count(name),address,listagg(name,',') within group(order by name)  "name"
from table
group by address;

【讨论】:

    【解决方案2】:

    试试这个(当你标记 sql server 时),

    SELECT Address,
           Stuff((SELECT ', ' + Cast(NAME AS VARCHAR(10)) [text()]
                  FROM   #Your_Table
                  WHERE  Address = t.Address
                  FOR XML PATH(''), TYPE) .value('.', 'NVARCHAR(MAX)'), 1, 2, ' ') List_Output,
           Count(Address) As [Count]
    FROM   #Your_Table t
    GROUP  BY Address 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 2017-11-25
      • 2014-04-28
      • 2012-05-03
      相关资源
      最近更新 更多