查询SQL上的GROUPBY子句
在sql 2008中,我成功地将分号分隔的值分隔为多行。现在我需要的是Count*语句查询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, '; ', '</
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