2017-09-21 22 views
-4

注:テーブルが正しく挿入されていません。例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の表から名前とタイプを選択していたときに私のクエリが、結果は

の下に示されている:親切

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

表を理解します

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

最新年値 bが必要ですut 重複した値(最新年値と前年値) これを助けてください。

+1

[so]は無料コード作成サービスではありません。 **あなた自身でコードを書くことを試みることが期待されます**。 [もっと研究をして](http://meta.stackoverflow.com/questions/261592)問題がある場合は**あなたが試したことを投稿することができます** **動作していないことの明確な説明**を提供し、** [mcve] **を提供します。私は良い質問と[完璧な質問]を読むことをお勧めします(http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。また、[ツアー]も必ず行ってください。 – Igor

+0

ヒント:集計クエリ(グループ化と最大化)。 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

関連する問題