Sql Server分组依据,计数查询
我有以下疑问Sql Server分组依据,计数查询,sql,sql-server,Sql,Sql Server,我有以下疑问 select COUNT(mc_owner) as nbr , mc_owner from [dbo].[full] where (date_reception > '01-01-2015') group by (mc_owner) order by nbr desc 这让我明白了 20000元素1 10000元素2 10000元素3 10000元素4 我只需要有两个结果element1和其他分组在on元素中 差不多 要素1 20000 其他30000 感谢您的帮
select COUNT(mc_owner) as nbr , mc_owner
from [dbo].[full]
where (date_reception > '01-01-2015')
group by (mc_owner)
order by nbr desc
这让我明白了
- 20000元素1
- 10000元素2
- 10000元素3
- 10000元素4
- 要素1 20000
- 其他30000
感谢您的帮助您使用的是一个
大小写
表达式,如下所示:
SELECT
COUNT(*) as nbr,
CASE mc_owner WHEN 'Element1' THEN 'Element1' ELSE `Others` END as Owner
FROM [dbo].[full]
WHERE (date_reception > '01-01-2015')
GROUP BY CASE mc_owner WHEN 'Element1' THEN 'Element1' ELSE `Others` END
ORDER BY COUNT(*) DESC
其思想是提供一个表达式,根据
mc_owner
字段的值,该表达式计算为您需要的两个值之一,即'Element1'
或其他值
SELECT
COUNT(*) as nbr,
CASE mc_owner WHEN 'Element1' THEN 'Element1' ELSE `Others` END as Owner
FROM [dbo].[full]
WHERE (date_reception > '01-01-2015')
GROUP BY CASE mc_owner WHEN 'Element1' THEN 'Element1' ELSE `Others` END
ORDER BY COUNT(*) DESC
declare @tt table(name varchar(10),id int)
insert into @tt(name,id)values ('element1',2000)
insert into @tt(name,id)values ('element2',2000)
insert into @tt(name,id)values ('element3',2000)
insert into @tt(name,id)values ('element4',2000)
;WITH CTE AS
(
select ROW_NUMBER()OVER(Partition by ID ORDER BY ID,name) RN, * from @tt
)
select NAME,ID from CTE
where RN = 1
UNION ALL
select 'Others' as NAME,SUM(id) as ID
from CTE
where RN >1
其思想是提供一个表达式,根据mcu owner
字段的值,该表达式计算为您需要的两个值之一,即'Element1'
或其他值。这些结果与查询不匹配(将计数放在第一位)。在我们尝试回答之前,请使您的问题自我一致。并定义定义定义行在“其他”下分组的条件。这不是我只想简化的实际结果。谢谢您的回复。这些结果与查询不匹配(将计数放在第一位)。在我们尝试回答之前,请使您的问题自我一致。同时定义定义行在“其他”下分组的标准。这不是我只想简化的实际结果。谢谢您的回复
declare @tt table(name varchar(10),id int)
insert into @tt(name,id)values ('element1',2000)
insert into @tt(name,id)values ('element2',2000)
insert into @tt(name,id)values ('element3',2000)
insert into @tt(name,id)values ('element4',2000)
;WITH CTE AS
(
select ROW_NUMBER()OVER(Partition by ID ORDER BY ID,name) RN, * from @tt
)
select NAME,ID from CTE
where RN = 1
UNION ALL
select 'Others' as NAME,SUM(id) as ID
from CTE
where RN >1