2

このアイテムテーブルをSQLServerデータベースに保存しています。

ID_Item   | ID_Sale  | ID_Product |
1         | 200      | 2314       |
2         | 200      | 3894       |
3         | 200      | 4949       |
4         | 100      | 9389       |
5         | 100      | 9499       |
6         | 300      | 9388       |

そして、「ID_Sale」列の最後のレコードを取得する必要があります。これらの記録は次のとおりです。

ID_Item   | ID_Sale  | ID_Product |
3         | 200      | 4949       |
5         | 100      | 9499       |
6         | 300      | 9388       |

このコードを試していますが、フェッチするレコードは1つだけです。

Select Top 1 * From Itens 
Where ID_Sale = 200
Order by ID_Item Desc

テーブル全体で結果を繰り返すにはどうすればよいですか?

4

2 に答える 2

1
SELECT ID_Item, ID_Sale, ID_Product 
FROM Tbl
WHERE Id_Item IN
         (
             SELECT Max(Id_Item) Id
             FROM Tbl
             WHERE [DateTime] BETWEEN @StartDate AND @EndDate
             GROUP BY Id_Sale
          )

SQLSERVER2005以降を使用する場合

;WITH CTE
AS
(
   SELECT ID_Item, ID_Sale, ID_Product, ROW_NOUMBER() OVER (PARTITION BY ID_Sale ORDER BY ID_Item DESC) RN
   FROM Tbl
   WHERE [DateTime] BETWEEN @StartDate AND @EndDate
)
SELECT ID_Item, ID_Sale, ID_Product
FROM CTE
WHERE RN = 1
于 2013-01-16T23:08:46.037 に答える
0

Yoはこのクエリを簡単に使用できます

    select * from Item where ID_Item in(
select MAX(ID_Item) as ID_Item from Item group by ID_Sale)
于 2013-01-17T05:33:49.253 に答える