2017-09-21 39 views
-4

注意:表格插入不正確。請理解需要顯示不同的值

(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 

和我的查詢,當我從例1表中選擇的名稱和類型結果如下所示

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

我需要一個最新年值 b ut 它顯示重複值(與最新年值和上一年值) 請幫助。

+1

[so] is * not * a free code writing service。預計你會嘗試**自己編寫代碼**。在[做更多研究]之後(http://meta.stackoverflow.com/questions/261592),如果你有問題,你可以**發佈你已經嘗試過**的清單,說明什麼是不工作的**並提供** [mcve] **。我建議閱讀[問]一個好問題和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要參加[旅遊]。 – Igor

+0

提示:聚合查詢(group by和max)。拿一個SQL教程。如前所述,這不是免費的代碼工廠。如果你已經表現出了一些努力(看起來你沒有),那麼這裏的志願者會表現出一些努力來幫助你。如果沒有證據表明你試圖自己研究或編碼,那麼他們通常不會。 – ADyson

+0

您的陳述存在的問題是DINSTICT僅刪除不同的組合,而不是明確的單個值 –

回答

0

您可以將年份作爲當前日期的年份,並使用當前年份的WHERE子句進行查詢。

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

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

您的查詢返回你問什麼,你選擇了不同的名稱和類型所以這就是你會得到,對於這些列的不同的值。

如果你只是想在不同的名字,那麼你可以這樣做:

SELECT DISTINCT 
     name 
FROM example1; 

如果你想要的類型太多,那麼你需要決定你要例如在它做什麼的聚集最大值,最小值,計數等...然後您可以使用GROUP BY

如果你想在不同的名稱和最recnet類型,那麼你可以使用:

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

在SQL同樣的類型和名稱是關鍵字,最好的做法是不使用的列名

0

您可以使用GROUP BY語句

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

這不會編譯我不認爲。您還需要按類型進行分組,或者按照您認爲適合問題的方式將其包含在聚合函數中(例如計數,總和) – ADyson