2012-09-07 81 views
0

考虑下面的代码:选择最小值与ID

DECLARE @table AS TABLE 
    (
    id INT IDENTITY , 
    DATA VARCHAR(100) , 
    code CHAR(1) 
) 

INSERT INTO @table 
     (data, code) 
VALUES ('xasdf', 'a'), 
     ('aasdf', 'a'), 
     ('basdf', 'a'), 
     ('casdf', 'b'), 
     ('Casdf', 'c'), 
     (NULL, NULL) 

我需要得到由代码分组最小数据行。我可以做到这一点没有嵌套查询?

基本上,我想是这样的:

SELECT TOP (1) 
     id , 
     MIN(data) 
FROM @table 
GROUP BY code 

回答

0

简短回答是否。这不可能。

2

SELECT *(选择 ROW_NUMBER)OVER(PARTITION BY代码ORDER BY代码DESC,数据DESC)AS行, ID,DATA(,代码 FROM @table)T其中T.Row = 1

+0

它的工作原理,但你已经使用了嵌套查询。 –