这样的插入语句怎么写?求解!

小野马1209 2017-08-28 05:14:52
--问题描述:
--OrderMaster是主表,OrderDetail隶属于OrderMaster 通过BillNo主键进行关联
--需求:OrderMark是一个模板,如何将模板中的数据插入到OrderDetail
--想得到的结果
--批次插入明细表,因为数据量大 ,RowId不是自增类型
/*BillNo RowId Cu_No Cu_name
001 1 1.1 合同
001 2 1.2 比价表
002 1 1.1 合同
002 2 1.2 比价表
003 1 1.1 合同
003 2 1.2 比价表
*/


--创建主表
Create table OrderMaster (BillNo varchar(20) Primary key)
INSERT INTO OrderMaster
SELECT '001' UNION ALL
SELECT '002' UNION ALL
SELECT '003'
--明细表
CREATE table OrderDetail (BillNo varchar(20),RowId int,CU_No varchar(20),Cu_Name varchar(20),primary key(BillNo,RowId))
--创建模板表
CREATE table OrderMark(CU_No varchar(20),Cu_Name varchar(20))
INSERT INTO Ordermark
SELECT '1.1','合同' UNION ALL
SELECT '1.2','比价表' UNION ALL
...全文
143 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-08-28
  • 打赏
  • 举报
回复
INSERT INTO OrderDetail
SELECT BillNo,
ROW_NUMBER() OVER ( PARTITION BY BillNo ORDER BY CU_No ) AS RowId,
CU_No,
Cu_Name
FROM dbo.OrderMaster
CROSS APPLY dbo.OrderMark
ORDER BY BillNo


SELECT * FROM OrderDetail


繁花尽流年 2017-08-28
  • 打赏
  • 举报
回复
SELECT a.BillNo,ROW_NUMBER() OVER (PARTITION BY a.BillNo ORDER BY b.Cu_No) AS RowId,b.CU_No,b.Cu_Name   
FROM OrderMaster a
CROSS JOIN OrderMark b
BillNo RowId CU_No Cu_Name -------------------- -------------------- -------------------- -------------------- 001 1 1.1 合同 001 2 1.2 比价表 002 1 1.1 合同 002 2 1.2 比价表 003 1 1.1 合同 003 2 1.2 比价表 如果要分批次LZ可以针对OrderMaster 限制每次取1000个billno来处理这样

27,579

社区成员

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

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