gpt4 book ai didi

sql - 从选择中选择最大和第二个最大值,并将它们分组?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:31 26 4
gpt4 key购买 nike

我已经和这个问题斗争了一个星期了,我需要帮助。

我有一个 select 语句,它生成一个表来显示每个产品,以及每个产品的导入日期。

我如何制作一个新表格来显示:

  • 产品在一栏中。
  • 另一列中的最后日期。
  • 最后一列中最后一个之前的日期。
  • 并按产品分组。

我已经在网上搜索了信息,但无法正常工作。大多数示例展示了如何从表中查找仅一秒 的倒数值。 我想按产品展示。

此外,由于使用 MSSQL,我无法使用 LIMIT。

来自查询的表

Result of query

查询

SELECT
S.acIdent AS Product,
CAST((SELECT top 1 adDate FROM the_move WHERE ackey = MI.acKey) AS date) AS ImportDate
FROM tHE_Stock S
LEFT JOIN tHE_MoveItem MI
ON S.acIdent = MI.acIdent
WHERE
( S.acWarehouse = '00051' ) AND
(
( RIGHT(LEFT(MI.acKey,5),3) = '100' ) OR
( RIGHT(LEFT(MI.acKey,5),3) = '190' )
)
ORDER BY
S.acIdent,
CAST((SELECT top 1 adDate FROM the_move WHERE ackey = MI.acKey) AS date)
DESC

最佳答案

您可以使用 row_number 和 pivot 进行查询,如下所示:

Select Product, [1] as [LastDate], [2] as [Last Before Last Date] from (
Select top (2) with ties *, RowN=Row_Number() over(partition by Product order by ImportDate desc) from Products
Order by (Row_Number() over(partition by Product order by ImportDate desc) -1)/2+1
) a
pivot (max(ImportDate) for RowN in([1],[2])) p

使用此查询输出类似的输入,如下所示:

+---------+------------+-----------------------+
| Product | LastDate | Last Before Last Date |
+---------+------------+-----------------------+
| 075031 | 2014-07-08 | 2014-06-19 |
| 075032 | 2014-12-09 | NULL |
| 075034 | 2016-03-10 | 2014-07-08 |
| 075036 | 2016-03-08 | 2015-09-08 |
+---------+------------+-----------------------+

关于sql - 从选择中选择最大和第二个最大值,并将它们分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44457569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com