Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询SQL上的GROUPBY子句_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

查询SQL上的GROUPBY子句

查询SQL上的GROUPBY子句,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,在sql 2008中,我成功地将分号分隔的值分隔为多行。现在我需要的是Count*语句 ID Answers 1 Agent;Department Store 2 Distributor;Wholesaler 使用 SELECT ID, Split.a.value('.', 'VARCHAR(100)') AS String FROM (SELECT ID, CAST ('<M>' + REPLACE(Question1, '; ', '</

在sql 2008中,我成功地将分号分隔的值分隔为多行。现在我需要的是Count*语句

ID Answers
1  Agent;Department Store
2  Distributor;Wholesaler
使用

 SELECT ID,  
 Split.a.value('.', 'VARCHAR(100)') AS String  
 FROM  (SELECT ID,  
     CAST ('<M>' + REPLACE(Question1, '; ', '</M><M>') + '</M>' AS XML) AS String  
 FROM  Registrations) AS A CROSS APPLY String.nodes ('/M') AS Split(a)
我只需要得到百货公司代理的数量

我能做点像这样的事吗

 Select Count(*),String from ( ..above query.. ) group by string ?!
您尝试的查询是正确的,它确实有效

这样做

 select count(*) as Count1,String from
    (
    SELECT ID,  
     Split.a.value('.', 'VARCHAR(100)') AS String  
     FROM  (SELECT ID,  
         CAST ('<M>' + REPLACE(Answers, ';', '</M><M>') + '</M>' AS XML) AS String  
     FROM  #t) AS A CROSS APPLY String.nodes ('/M') AS Split(a)
     )x

     group by x.String
还是像这样

select count(*) as Count1 from
        (
        SELECT ID,  
         Split.a.value('.', 'VARCHAR(100)') AS String  
         FROM  (SELECT ID,  
             CAST ('<M>' + REPLACE(Answers, ';', '</M><M>') + '</M>' AS XML) AS String  
         FROM  #t) AS A CROSS APPLY String.nodes ('/M') AS Split(a)
         )x

是的,你就是这么做的。。。您知道SQL中有多少分隔列表是正确的吗?正是出于这个原因,它们应该放在单独的表中是的,将查询放在子查询中,这样您就可以使用group by中的别名。我认为count*不需要group by,我不能把group by放在查询中:@Liath是的,它应该在一个不同的表中,有一个FK,但是像这样保存是由另一个人完成的,现在我必须处理这个问题并得到答案:如果我想替换任何包含other:xxx到other的行,我可以再添加一个替换吗
select count(*) as Count1 from
        (
        SELECT ID,  
         Split.a.value('.', 'VARCHAR(100)') AS String  
         FROM  (SELECT ID,  
             CAST ('<M>' + REPLACE(Answers, ';', '</M><M>') + '</M>' AS XML) AS String  
         FROM  #t) AS A CROSS APPLY String.nodes ('/M') AS Split(a)
         )x