SQL Server 2005 上个月最新条目

发布于 2025-01-08 20:09:43 字数 195 浏览 2 评论 0原文

我的 SQL Server Express 2005 表有 itemId,ItemName,price,ItemCount,date 列,每个月都会输入几行。

我需要为上个月输入的每个最新 itemId,ItemName,price,ItemCount,date 检索一行

非常感谢 阿尔贝托

My SQL Server Express 2005 table has itemId,ItemName,price,ItemCount,date columns with several rows entered every month.

I need to retrieve one single row for each most recent itemId,ItemName,price,ItemCount,date entered last month

Thank you a lot
Alberto

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瞄了个咪的 2025-01-15 20:09:43

如果我理解正确,您需要 ROW_NUMBER()PARTITION BY 子句。

类似于(未测试):

;WITH a AS (
SELECT
  itemId,ItemName,price,ItemCount,date
  , ROW_NUMBER() OVER (PARTITION BY itemId,ItemName,price,ItemCount ORDER BY date DESC) AS num
FROM 
 table
WHERE
 date >= @begin_on_current_month
) 
SELECT
  a.*
FROM
  a
WHERE
  a.num = 1

这应该返回之后添加的每个唯一的 itemId,ItemName,price,ItemCount 的最后一个条目
@begin_on_current_month

If I understand correctly you need ROW_NUMBER() with PARTITION BY clause.

Something like (not tested):

;WITH a AS (
SELECT
  itemId,ItemName,price,ItemCount,date
  , ROW_NUMBER() OVER (PARTITION BY itemId,ItemName,price,ItemCount ORDER BY date DESC) AS num
FROM 
 table
WHERE
 date >= @begin_on_current_month
) 
SELECT
  a.*
FROM
  a
WHERE
  a.num = 1

This should return last entry for each unique itemId,ItemName,price,ItemCount added after
@begin_on_current_month.

罪歌 2025-01-15 20:09:43

它不起作用

SELECT itemCode、ItemName、rate、found、date、ROW_NUMBER() OVER (PARTITION BY itemCode
按日期 DESC) AS 编号排序
来自 StockCheck AS
哪里日期< '2012/01/01'
选择一个。*
来自
其中 a.num = 1
ORDER BY itemcode

不支持 OVER SQL 结构或语句。

6173 ALUMINIUM FOIL 18" X 25' 77.0000 5.00 21/12/2011 00:00:00 1

6173 ALUMINIUM FOIL 18" X 25' 86.9159 9.00 15/12/2011 00:00:00 2

6173 铝箔 18" X 25' 70.0000 69.00 10/12/2011 00:00:00 3

6173 铝箔 18" X 25' 86.9159 9.00 01/12/2011 00:00:00 4

It does not work

SELECT itemCode, ItemName, rate, found, date, ROW_NUMBER() OVER (PARTITION BY itemCode
ORDER BY date DESC) AS num
FROM StockCheck AS a
WHERE date < '2012/01/01'
SELECT a.*
FROM a
WHERE a.num = 1
ORDER BY itemcode

The OVER SQL construct or statement is not supported.

6173 ALUMINIUM FOIL 18" X 25' 77.0000 5.00 21/12/2011 00:00:00 1

6173 ALUMINIUM FOIL 18" X 25' 86.9159 9.00 15/12/2011 00:00:00 2

6173 ALUMINIUM FOIL 18" X 25' 70.0000 69.00 10/12/2011 00:00:00 3

6173 ALUMINIUM FOIL 18" X 25' 86.9159 9.00 01/12/2011 00:00:00 4

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文