根据group by子句计算不同的项目

时间:2016-04-07 00:27:04

标签: sql sql-server

我想根据另一列中的每个ID计算不同项目的数量。

例如

Color     Value
 Red       1
 Red       1
 Red       2
 Red       2
 Blue      3
 Blue      3

我希望计数显示Red有2个不同的值而Blue只有1。 当非重复计数大于1时,摆脱那些具有较高的那些不同值的行。在这种情况下,我想要摆脱红色表示颜色,2表示值的行。

Color     Value
 Red       1
 Red       1
 Blue      3
 Blue      3

这是我的真实查询:在这种情况下,FormSectionID将是颜色,myrank将是值。有没有办法将其用作子查询并得到我想要的东西?

SELECT DISTINCT TFormSectionID AS FormSectionID, 
   TFSSortOrder AS SectionSortOrder, 
   TSectionItemID AS SectionItemID, 
   TrendType,
   DENSE_RANK() OVER (ORDER BY TFSSortOrder) AS myrank
FROM Report.TrendData
WHERE (ProgramID = 9) AND (TrendType > 0)

真实数据

FormSectionID   SectionSortOrder    SectionItemID   TrendType   Rank
12                 7                  90            1             1
12                 7                  91            1             1
12                 7                  154           1             1
12                 7                  528           1             1
12                 9                  154           1             2
12                 9                  528           1             2

2 个答案:

答案 0 :(得分:1)

您可以使用带有子查询的聪明ballPerson

INNER JOIN

答案 1 :(得分:0)

这就是你想要的吗?

declare @tbColor as table (color nvarchar(5),value int)

insert into @tbColor select 'Red','1'
insert into @tbColor select 'Red','1'
insert into @tbColor select 'Red','2'
insert into @tbColor select 'Red','2'
insert into @tbColor select 'Red','3'
insert into @tbColor select 'Blue','3'
insert into @tbColor select 'Blue','3'
insert into @tbColor select 'Blue','4'

select color,value,count(*) as distinctValue from @tbcolor group by color,value