我想获取列
[QB Revision History],[Pervious QB Revision History]
根据列
对它们进行分组Code
但我不能这样做。我得到这两列
[QB Revision History],[Pervious QB Revision History]
使用属性
ROW_NUMBER()
select ROW_NUMBER()OVER(
ORDER BY CONVERT(DateTime, '01-'+t1.[MonthTitle]) asc) AS rownum,
t1.[MonthTitle],t1.[Code],t1.[QB Revision History].
into #temp21
from tbl_SampleQBSizeCDP t1
group by Code,[MonthTitle],[QB Revision History]
我正在尝试使用此查询,但它没有给出预期的结果。
select t1.*,t2.[QB Revision History] as [Pervious QB Revision History]
#into #temp22 from #temp21 t1, #temp21 t2
where t1.Code=t2.Code and t1.rownum>t2.rownum
任何人都可以帮我解决这个问题吗? 输入: rownum MonthTitle代码QB修订历史 1月16日DFSAWGTESTQB51010新版 4月16日DFSAWGTESTQB51010 R1 5月11日 - 16日DFSAWGTESTQB51010改造
输出: rownum MonthTitle Code QB修订历史Pervious QB修订历史 4月16日DFSAWGTESTQB51010 R1新 5月11日 - 16日DFSAWGTESTQB51010改造新版 5月11日至16日DFSAWGTESTQB51010改造版R1
预期产出:
答案 0 :(得分:1)
如果我理解正确,您想要的功能是LAG()
,而不是ROW_NUMBER()
:
select t1.[MonthTitle], t1.[Code], t1.[QB Revision History],
LAG([QB Revision History]) OVER (ORDER BY CONVERT(DateTime, '01-'+t1.[MonthTitle]
) as prev_revisition_history
into #temp21
from tbl_SampleQBSizeCDP t1;
我不确定order by
的用途。您的SELECT
没有聚合功能。没有样本数据和期望的结果,似乎没有必要。
编辑:
在SQL Server 2008中,您可以使用outer apply
:
select t1.[MonthTitle], t1.[Code], t1.[QB Revision History],
t2.QB Revision History]) as prev_revisition_history
into #temp21
from tbl_SampleQBSizeCDP t1 outer apply
(select top 1 t2.*
from tbl_SampleQBSizeCDP t2
where CONVERT(DateTime, '01-'+t2.[MonthTitle]) < CONVERT(DateTime, '01-'+t1.[MonthTitle])
order by CONVERT(DateTime, '01-'+t2.[MonthTitle]) desc
) t2