这个困扰太久了,第一次入库和第一次出库怎么合并成一行呢(stuff把他变成一个格子里 要求是一行)感谢
该回答内容部分引用GPT,GPT_Pro更好的解决问题
SQL Server中可以使用Stuff函数来合并第一次入库和第一次出库的数据,Stuff函数可以将一列中的多个值合并成一行,使用它可以实现将入库和出库合并成一行的目的。具体实现步骤如下:
SELECT STUFF((SELECT ','+CONVERT(VARCHAR(10), 入库时间) + '|' + CONVERT(VARCHAR(10), 出库时间) FROM 表A FOR XML PATH('')),1,1,'') as 合并后的数据
通过以上步骤,就可以实现将第一次入库和第一次出库的数据合并到一行中。
如果回答有帮助,望采纳。
先用 row_number 按单号和日期类型分组排上序号,然后列转行
不懂可以加我咨询,若有帮助,望给个采纳,谢谢!
1、解决方法如下
-- 先按通知单号进行分组
select noticeNo from noticeTable group by noticeNo
-- 分组后,且查询入库时间最小值(就是第一次入库时间)
select noticeNo,min(inTime) inTime from noticeTable group by noticeNo
-- 分组后,且查询出库时间最小值(就是第一次出库时间)
select noticeNo,min(outTime) outTime from noticeTable group by noticeNo
-- 根据单号查询出第一次入库和第一次出库情况
select a.noticeNo,a.inTime,b.outTime
from(
select noticeNo,min(inTime) inTime from noticeTable group by noticeNo
) a
left join (
select noticeNo,min(outTime) outTime from noticeTable group by noticeNo
) b on b.noticeNo=a.noticeNo
创建表
create table noticeTable
(
num int,
noticeNo nvarchar(50),
userName nvarchar(50),
orderTime datetime,
authTime datetime,
inTime datetime,
outTime datetime
)
模拟数据
-- 新塘尚亿
insert into noticeTable(num,noticeNo,userName,orderTime,authTime,inTime,outTime)
values
(0,'1N30222350','新塘尚亿','2023-02-22 15:49:00','2023-02-22 15:49:00',NULL,'2023-02-22 16:21:00'),
(0,'1N30222350','新塘尚亿','2023-02-22 15:49:00','2023-02-22 15:49:00',NULL,'2023-02-22 16:23:00'),
(0,'1N30222350','新塘尚亿','2023-02-22 15:49:00','2023-02-22 15:49:00','2023-02-22 16:20:00',NULL)
-- 新塘腾飞
insert into noticeTable(num,noticeNo,userName,orderTime,authTime,inTime,outTime)
values
(0,'1N30222351','新塘腾飞','2023-02-24 09:25:00','2023-02-24 09:25:00',NULL,'2023-02-24 09:31:00'),
(0,'1N30222351','新塘腾飞','2023-02-24 09:25:00','2023-02-24 09:25:00',NULL,'2023-02-24 09:33:00'),
(0,'1N30222351','新塘腾飞','2023-02-24 09:25:00','2023-02-24 09:25:00','2023-02-24 09:30:00',NULL)
1、表结构和具体需求不太清楚,根据截图给个SQL思路:
SELECT DISTINCT 序号, 通知单号, 客户简称, 下单日期, 审核日期
, FIRST_VALUE( 入库日期 ) OVER( PARTITION BY 序号, 通知单号, 客户简称, 下单日期, 审核日期 ORDER BY 入库日期 ) AS 入库日期
, FIRST_VALUE( 出库日期 ) OVER( PARTITION BY 序号, 通知单号, 客户简称, 下单日期, 审核日期 ORDER BY 出库日期 ) AS 出库日期
FROM tbl