方法一:
/*VS 2005 + MS SQL2000 */
/*********************some code here**********************************/
StringBuilder strSql = new StringBuilder();
strSql.Append("DECLARE @maxYear VARCHAR(4) /r/n");
strSql.Append("DECLARE @maxSeason VARCHAR(1) /r/n");
strSql.Append("SET @maxYear = (SELECT MAX(YEAR) FROM tempTable) /r/n");
strSql.Append("SET @maxSeason = (SELECT MAX(SEASON) FROM tempTable WHERE YEAR= @maxYear) /r/n");
strSql.Append("SELECT * /r/n");
strSql.Append("FROM tempTable /r/n");
strSql.Append("WHERE YEAR= @maxYear /r/n");
strSql.Append("AND SEASON= @maxSeason /r/n");
strSql.Append("ORDER BY tempTable.attrib ASC"); //tempTable.attrib represents a attribute of tempTable
/*********************some code here**********************************/
--------------------------------------------------------------------------------------------------------------
当然,还有其他方法来得到同样的结果,例如下面的SQL语句就可以.
方法二:
select * from tempTable
where YEAR = (select max(YEAR) from tempTable)--取最大的年度值
and SEASON = (select max(SEASON) from tempTable where YEAR = (select max(YEAR) from tempTable) )--取最大年度值时的最大季度值
不过,个人认为这样有不太好理解,特别是以后再次读到这段代码时可能会遇到点麻烦,所以就采上了上面的方法一,而没有采用方法二.
以后若能想出更好的方法,再更到到此.
______________________________________________________________________
全文完
2009年6月8日