需要显示不同的值

时间:2017-09-21 10:43:27

标签: sql

注意:表格未正确插入。请理解

(Col1-ID,Col2-Name,Col3-Type(a1,b1,c1,d1),Col4-Year)

表:示例1

这是我的查询,

select distinct name,type from example1 

Id   Name       Type   Year

1    sai         a1    2017

2    sai         b1    2016

3    sai         c1    2015

4    joe         a1    2016

5    Michael     c1    2015

6    Michael     d1    2013

7    Michael     a1    2012

我的查询是,当我从example1表中选择名称和类型时,结果如下所示

Id   Name       Type   
1    sai         a1    
2    sai         b1        
3    joe         a1    
4    Michael     c1    
5    Michael     d1

我需要最新年度值,但显示重复值(包含最新年份值和上一年度值) 请帮忙。

3 个答案:

答案 0 :(得分:0)

您可以将年份作为当前日期的年份部分,并将查询与当前年份的WHERE子句一起使用。

DECLARE @currYear INT = DATEPART(yyyy, GETDATE())

select distinct name,type from example1 WHERE Year = @currYear

答案 1 :(得分:0)

您的查询返回了您要求的内容,您选择了不同的名称和类型,这样您就可以得到这两个列的不同值。

如果您只想要不同的名称,那么您可以这样做:

SELECT DISTINCT
       name
FROM example1; 

如果您也想要这种类型,那么您需要决定要对其进行哪种聚合,例如最大,最小,计数等...然后你可以使用GROUP BY

如果您想要不同的名称和最多的recnet类型,那么您可以使用:

SELECT
      name,
      MAX(type)
FROM example1
GROUP BY name

同样类型和名称是SQL中的关键字,最佳做法是不将这些用于列名称

答案 2 :(得分:0)

您可以使用GROUP BY语句

 Select name,type from example1 where year=YEAR(CURDATE()) group by name,type;