2017-10-10 68 views
1

我有一個表Orders按日期選擇行和排除行已最新記錄

Name    DateOrdered 
louie   01/50/2017 
jonathan   02/06/2016 
prince   05/23/2016 
louie   07/02/2016 

我想選擇在今年的記錄,例如2016,但我想結果只顯示jonathanprince因爲louie 2017年有最新記錄,該如何查詢?提前致謝。

+0

的可能的複製[如何選擇WHERE NOT EXIST使用LINQ?](https://stackoverflow.com/questions/9031008/how-to-select-where-not-exist-using-linq) – maSTAShuFu

+0

我必須在同一張表中檢查它 –

回答

0

使用子查詢。例如,在處理SQL(Sybase ASE的)

Select from orders a 
Where DateOrdered != (select min(dateordered) from orders b 
         where convert(char(04),dateordered)=convert(char(04),a.dateordered)) 

轉換功能是從dateordered

我希望這將是有益的領域比較年份部分

0

如果您使用以下日期排序查詢查詢可以去掉最上面一行:

declare @Total INT; 
declare @requiredRows INT; 
Select @Total= Count (*) From Orders 
SET @requiredRows = @Total -1; 

Select * From(
Select TOP (@requiredRows) * From Orders 
Order By DateOrdered ASC) As tbl 
Order By DateOrdered DESC 

您可以使用「YEAR」功能,從dateOrdered列中提取年

2

請嘗試下面的示例查詢。

SELECT * from Orders WHERE YEAR(DateOrdered) = '2016' AND name != 
'louie';