按类型选择查询

按类型选择查询,第1张

按类型选择查询

因此,首先只是暂存您的数据。请注意,我将添加一个标识行ID,以供以后使用。

IF OBJECT_ID('tempdb..#test') IS NOT NULL   drop table #testIF OBJECT_ID('tempdb..#Numbered') IS NOT NULL   drop table #Numbered CREATE TABLE #test (Code CHAr(2), [DESC] varchar(10), [type id] INT, RowNumber INT IDENTITY(1,1))INSERT #test     VALUES ('01', 'Rajan', 1),('01' ,'Sajan', 1),('01' ,'Vijayan', 2),('01' ,'Suresh', 3),('01' ,'Caresh', 4),('01' ,'Sujesh', 4),('01' ,'vikran', 4),('02' ,'desk', 1),('02' ,'card' ,2),('02' ,'villa', 2),('02', 'megash', 2),('02', 'supan', 3)

然后,我们创建一个存放区,使用该行ID来计算每个名称应继续在代码的哪一行。

  CREATE TABLE #Numbered      (       RowNum int, Code CHAr(2), [type] VARCHAr(10), [DESC] VARCHAr(10)       )   INSERT #Numbered         SELECT (select count(*) from #test where pre=t1.Code AND [type id]=t1.[type id] AND  RowNumber<=t1.RowNumber),      pre,      [type id],      [DESC] FROM #test t1

最后,我们在数据上创建一个PIVOT表(以“伪造”该运算符的标准SQL 2000方法完成)。然后,我们将“
PIVOT表”放置在派生选择中,该选择仅返回所需的列,但允许我们对pre和rownum列进行排序以生成所需的输出。

     SELECt Code,[type-1],[type-2],[type-3],[type-4]        FROM (Select P.Code,RowNum        , Min( Case When type = '1' Then [DESC] End ) As [type-1]        , Min( Case When type = '2' Then [DESC] End ) As [type-2]        , Min( Case When type = '3' Then [DESC] End ) As [type-3]        , Min( Case When type = '4' Then [DESC] End ) As [type-4]From #Numbered As P  Group By P.Code,RowNum) R        ORDER BY Code,RowNum

如果您想进一步解释这些问题,请告诉我。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5649718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存