SQL Server 2012:如何在列中查找公共值

时间:2015-08-20 07:30:54

标签: sql-server sql-server-2012

SQL Server 2012:如何在列中找到常用值

请在下面找到我的确切要求并帮助我完成微调查询。 请在下面找到我的确切要求,并帮助我完成微调查询。 请在下面找到我的确切要求,并帮助我完成微调查询。

  

Input :

select 1, 'sankar', 'GROUPLG'
union all 
select 1, 'sankar', 'GROUPLS'
union all 
select 1, 'sankar', 'GROUPNG'
union all 
select 1, 'sankar', 'GROUPNS'
union all
select 2, 'Srini', 'HYDRSPMLG'
union all 
select 2, 'Srini', 'HYDRSPMLS'
union all 
select 3, 'Ravi', 'AADSCLS'
union all
select 4, 'Arun',  'RREDFTLS'
union all
select 4, 'Arun',  'RREDFTNG'
union all
select 5, 'Raja',  '1234567'
union all
select 5, 'Raja',  'ABCDESLS'
union all
select 5, 'Raja',  'ABCDESLG'
union all
select 6, 'Dhilip',  'GGGGRASCDW_RV'


Output :

-- 1 Sankar GROUP(LG,LS,NG,NS)
-- 2 Srini  HYDRSPM(LG,LS)
-- 3 Ravi   AADSCLS
-- 4 Arun   RREDFT(LS,NG)
-- 5 Raja   1234567
-- 5 Raja   ABCDESLG(LG,LS)
-- 6 dhilip GGGGRASCDW_RV

4 个答案:

答案 0 :(得分:2)

使用FOR XML PATH('')连接组:

SQL Fiddle

SELECT
    t.Userid,
    t.Username,
    Groupname = 'GROUP(' + 
        STUFF((
            SELECT ',' + STUFF(GroupName, 1, 5, '')
            FROM tbl
            WHERE Userid = t.Userid
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
        , 1, 1, '') + ')'
FROM tbl t
GROUP BY t.Userid, t.Username
DROP TABLE tbl

结果:

| Userid | Username |          Groupname |
|--------|----------|--------------------|
|      1 |   sankar | GROUP(LG,LS,NG,NS) |
|      2 |    Srini |       GROUP(LG,LS) |
|      3 |    Aathi |          GROUP(LS) |

答案 1 :(得分:1)

假设userid + username组合是唯一的,请尝试以下查询。另外,考虑到在单个群组的情况下您不需要围绕群组使用括号,我会更新以下查询。

说明:我已使用STUFF函数计算组的分组,其中包含逗号,后跟每个组代码,例如LS,LG, 现在基于使用CHARINDEX使用LEN的逗号位置与使用 select userid, username, CASE WHEN CHARINDEX(',',groupname)<LEN(groupname) THEN 'GROUP('+ SUBSTRING(groupname,1,LEN(groupname)-1) +')' ELSE 'GROUP'+SUBSTRING(groupname,1,LEN(groupname)-1) end as groupname from ( select userid, username, stuff(( select replace(groupname,'group','') + ',' from tbl where userid=t.userid and username=t.username for xml path(''),type).value('.','varchar(max)'),1,0,'') as groupname from tbl t group by userid, username )t 的字符串长度的比较,我们附加逻辑或者将GROUP()或GROUP添加到字符串

  Userid    Username    Groupname
  1             Sankar         GROUP(LG,LS,NG,NS)
  2             Srini          GROUP(LG,LS)
  3             Aathi          GROUPLS

并更新 sql fiddle link http://sqlfiddle.com/#!6/21f65/1

给出了这个确切的输出

public abstract class BaseEntity implements Serializable {

    @Id
    @GeneratedValue
    private Long id;
    // Getters and setters
}

答案 2 :(得分:1)

尝试以下代码段 -

$scope.changeName = function() {
        objthis.currentNodeSelected.name = objthis.currentEdit.name;
        console.log($scope.name);
        console.log(objthis.currentNodeSelected);
    };

修改:根据要求更改了代码。请立即重新检查。

答案 3 :(得分:0)

最后,我已经成功完成了我开发的以下查询。谢谢大家。如果需要您可以复制以下查询并在SSMS中执行。

&#13;
&#13;
$result = json_decode(curl_exec($ch));
$resources = $result->{'$resources'};
&#13;
&#13;
&#13;