关于相同记录按条数进行拼接的问题

morliz子轩 2019-09-11 04:55:37
有以下数据表:


需要生成的结果:



是否有简单的方法?求教各位老师。感谢
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
morliz子轩 2019-10-05
  • 打赏
  • 举报
回复
引用 9 楼 二月十六 的回复:
引用 8 楼 morliz子轩 的回复:
我明白了。2/2 = 1 ,3/2 =1,只取商,不取余啊?
这四条数据取余还行,就是0,1。如果再多几条数据就不行了,因为和2取余全是0,1
还真被你说中了,以下这种情况,如何解啊? 求教!
二月十六 2019-09-12
  • 打赏
  • 举报
回复
引用 8 楼 morliz子轩 的回复:
我明白了。2/2 = 1 ,3/2 =1,只取商,不取余啊?
这四条数据取余还行,就是0,1。如果再多几条数据就不行了,因为和2取余全是0,1
morliz子轩 2019-09-12
  • 打赏
  • 举报
回复
我明白了。2/2 = 1 ,3/2 =1,只取商,不取余啊?
二月十六 2019-09-12
  • 打赏
  • 举报
回复
这样看一下应该就明白了
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([Length] int,[Width] INT,[Qty] decimal(18,2))
Insert #T
select 699,'2182',1.00 union all
select 699,'2182',1.00 union all
select 699,'2182',1.00 union all
select 699,'2182',1.00
Go
--测试数据结束
SELECT
(ROW_NUMBER()OVER(ORDER BY GETDATE())+1)/2 AS rn ,
ROW_NUMBER()OVER(ORDER BY GETDATE()) rn1
FROM #T
morliz子轩 2019-09-12
  • 打赏
  • 举报
回复
非常感谢,你的解法已经达到了我的需求。 我只是有点不明白,over (order by getdate()) +1 /2,是咋分成2条记录一个序号的。
二月十六 2019-09-11
  • 打赏
  • 举报
回复
那个count我不知道怎么算的,随便算了一下楼主可以根据实际情况自己改
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([Length] int,[Width] INT,[Qty] decimal(18,2))
Insert #T
select 699,'2182',1.00 union all
select 699,'2182',1.00 union all
select 699,'2182',1.00 union all
select 699,'2182',1.00
Go
--测试数据结束
;WITH cte AS (
Select *,(ROW_NUMBER()OVER(ORDER BY GETDATE())+1)/2 AS rn ,RTRIM(Length)+'*'+RTRIM(Width) AS Size FROM #T
)
SELECT rn ,
STUFF(( SELECT '||' + cte.Size
FROM cte
WHERE rn = a.rn
FOR
XML PATH('')
), 1, 2, '') AS Size,
SUM(a.Qty) AS Num,
SUM(a.Qty)/2 AS Count
FROM cte a
GROUP BY a.rn



morliz子轩 2019-09-11
  • 打赏
  • 举报
回复
但问题是,每2条的尺寸,要拼接成一起。
morliz子轩 2019-09-11
  • 打赏
  • 举报
回复
对,大概是这意思。
二月十六 2019-09-11
  • 打赏
  • 举报
回复
没太看明白,四条数据变成两条一样的?
morliz子轩 2019-09-11
  • 打赏
  • 举报
回复
纠正下,结果图的SlicesNum是2,一共4件,长*宽是尺寸。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧