[英]How do I select distinct values between two dates
我正在兩個日期之間選擇兩個記錄,這樣做時我遇到重復的記錄,我使用了單詞distinct,但它不起作用:這是我的查詢的樣子:
public List<i> searchTwoDates(string firstDate, string secondDate)
{
DateTime fdate = Convert.ToDateTime(firstDate);
string realfirstDate = fdate.ToLongDateString();
DateTime sdate = Convert.ToDateTime(secondDate);
string realsecondDate = sdate.ToLongDateString();
List<i> date = new List<i>();
SqlConnection conn = new SqlConnection(....);
SqlCommand command = new SqlCommand(@"SELECT distinct * From TableName WHERE Cast(columnName AS DATE) > @columnName AND CAST(columnName AS DATE) < @columnName1 ORDER BY columnName1 Desc", conn);
command.Parameters.AddWithValue("@columnName", realfirstDate);
command.Parameters.AddWithValue("@columnName2", realsecondDate);
conn.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Mod d = new Mod();
here i get my column names....
date.Add(d);
}
conn.Close();
return date;
}
我的數據庫中也有一個唯一ID,因此我們可以使用它來檢索唯一記錄,但是我該怎么寫呢?
目前我正在重復記錄
ID FName sName Date
1 John JAck 2013-9-07
2 Linda Bush 2013-10-07
3 Linda Bush 2013-11-07
This is what i want
ID FName sName
1 John JAck 2013-9-07
2 Linda Bush 2013-11-07
這是2013-9-07至2013-11-07之間的記錄。 在這些記錄之間,我不需要任何重復的ID
[從評論遷移]
您應該使用select distinct id, fname, sname from table
。 如果您不需要日期,則可以使用,無需重復。
嘗試這個
Select Max(ID),FName,sName,Max(Date)
FROM Table1
Where Date > 'SomeDate' And Date < 'SomeDate'
Group By FName,sName
不要嘗試使用BETWEEN
SELECT DISTINCT ID,FName,sName,Date
FROM Table1
WHERE Date BETWEEN 'Date1' And 'Date2'
UPDATE
由於上述問題中的兩個日期和ID不同,因此您應該使用分組。 這給您:
SELECT MIN(ID),FName,sName, MIN(Date)
FROM Table1
WHERE Date BETWEEN 'Date1' And 'Date2'
ORDER BY ID
GROUP BY FName,sName
DISTINCT
將不起作用,因為每個記錄的ID和日期都不同。
上面的查詢將為您提供第一個出現的ID。 您可以將ORDER BY
更改為Date以獲取最早的日期。 或者,您想要最新的然后使用MAX
而不是MIN
然后將ORDER BY
與DESC
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.