gpt4 book ai didi

SQL Server 2005 group by 具有相同的列但不同的日期和时间?

转载 作者:行者123 更新时间:2023-12-03 02:47:52 24 4
gpt4 key购买 nike

大家...目前我有一张表格如下..

DATE               BATCHNO     PRODCODE
----------------------------------------------
31/12/2009 23.53 10859 2003P
01/01/2010 00.04 10860 2003P
01/01/2010 00.06 10861 2003P
01/01/2010 00.13 10862 2003P
01/01/2010 00.30 10863 1259
01/01/2010 03.02 10864 639B
01/01/2010 03.13 10865 639B
01/01/2010 03.20 10866 639B
01/01/2010 04.13 10867 2003P
01/01/2010 04.20 10868 2003P
01/01/2010 04.30 10863 2003P

上面是我现在拥有的表格的示例..每当有新的BATCHNO并且BATCHNO增加1时就会生成DATE..PRODCODE是机器制造产品的产品代码,比方说产品2003P生产完毕,会自动转去其他产品如1259...

我想将这些数据计算为以下所需的结果:

DATE               PRODCODE
----------------------------------------------
31/12/2009 23.53 2003P
01/01/2010 00.13 2003P
01/01/2010 00.30 1259
01/01/2010 00.30 1259
01/01/2010 03.02 639B
01/01/2010 03.20 639B
01/01/2010 04.13 2003P
01/01/2010 04.30 2003P

这意味着 31/12/2009 23.53 是产品 2003P 的开始时间,01/01/2012 00.13 是产品 2003P 的停止时间..而产品 1259 是特殊的,因为 01/01/2010 00.30 只生产1 个产品在转移到其他产品之前..基本上我不能使用分组依据,因为它将按具有相同代码的所有产品进行分组..问题是检测特定产品代码的开始时间和停止时间。 。如何才能做到这一点?这是针对 SQL SERVER 2005...

谢谢大家..

最佳答案

select U.[DATE], U.PRODCODE
from
(
select min(T.[DATE]) as StartDate,
max(T.[DATE]) as EndDate,
T.PRODCODE
from
(
select [DATE],
PRODCODE,
row_number() over(order by [DATE]) as rn1,
row_number() over(order by PRODCODE, [DATE]) as rn2
from YourTable
) T
group by T.PRODCODE, T.rn2-T.rn1
) T
unpivot
(
[DATE] for D in (StartDate, EndDate)
) U
order by U.[DATE]

SE-Data

关于SQL Server 2005 group by 具有相同的列但不同的日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678997/

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