假设您仅限于使用此语法(不能使用MAX或MIN等聚合函数,也不能使用GROUP BY子句;请勿“不问我为什么):运行没有GROUP BY和聚合函数的查询
{SQL query} ::= SELECT [DISTINCT | ALL] [TOP {integer}]
{select_list}
FROM {table_reference}
[WHERE {search_condition}]
[ORDER BY {orderby} { ',' {orderby} } ]
假设我们有一个ITEM表,其中标识符被称为ITEM_ID。对于给定的ITEM_ID,您可以有多个具有相同ITEM_ID但不同SHIP_DATE的行。你如何编写一个查询,只返回具有最新SHIP_DATE的ITEMS给定的前面的语法?
我已经尝试使用TOP N(检索结果集中的第一行)与ORDER BY(从最大SHIP_DATE到最小SHIP_DATE排序)结合使用。任何想法或建议?
我想什么是这样的:
SELECT TOP N * FROM ITEM WHERE ITEM_ID='X' ORDER BY SHIP_DATE DESC
其实前面的查询似乎是工作,但我不知道是否有更好的方式来做到这一点。
这不是功课,我需要使用支持FileNet P8的语法创建一个查询:http://publib.boulder.ibm.com/infocenter/p8docs/v4r5m1/index.jsp?topic=/com.ibm.p8.doc/developer_help/content_engine_api/guide/query_sql_syntax_ref.htm
“它不起作用”不起作用。请更确切地说明你所尝试的是什么,你的期望以及你得到了什么。 – 2009-10-21 00:11:30
谢谢,我再澄清一点。 – 2009-10-21 00:23:36
更正,它应该是TOP N而不是TOP 1 – 2009-10-21 02:09:20