34,587
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [dbo].[T_OrderProcess](
[OrderID] [nvarchar](20) NOT NULL,
[PMID] [nvarchar](20) NOT NULL,
[ProductionDate] [datetime] NULL,
[Remark] [nvarchar](200) NULL,
[Id] [int] IDENTITY(1,1) NOT NULL,
[OpOrder] [int] NULL,
[OpTime] [nvarchar](50) NULL,
[IsState] [nvarchar](10) NOT NULL,
[LaboratoryNO] [nvarchar](50) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[T_OrderProcess] ADD CONSTRAINT [T_OrderProcess_Default] DEFAULT ((1)) FOR [IsState]
GO
--数据
insert into T_OrderProcess
select
'RO1607010001', '算了算了', '2015-10-16 00:00:00.000','', '1' , '21333354.0'
CREATE TABLE [dbo].[T_OrderMaterial](
[OrderID] [nvarchar](20) NOT NULL,
[MaterialNumber] [nvarchar](50) NOT NULL,
[BatchNumber] [nvarchar](50) NULL,
[MaterialNum] [decimal](18, 0) NULL,
[Remark] [nvarchar](200) NULL,
[Unit] [nvarchar](50) NULL,
[Id] [int] IDENTITY(1,1) NOT NULL,
[IsState] [nvarchar](10) NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[T_OrderMaterial] ADD CONSTRAINT [T_OrderMaterial_Default] DEFAULT ((1)) FOR [IsState]
GO
-- 数据
insert into T_OrderMaterial
select
'RO1607010001' , '2345' , '123' , 111 union all
select
'RO1607010001', '3456' , '122' , 55
SELECT *
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY OrderID ORDER BY ID ) AS RN
FROM T_OrderMaterial
) AS a
LEFT JOIN ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY OrderID ORDER BY ID ) AS RN
FROM T_OrderProcess
) AS b ON a.OrderID = b.OrderID
AND a.RN = b.RN;
这样用
--数据
--insert into T_OrderProcess
--select
--'RO1607010001', '算了算了', '2015-10-16 00:00:00.000','', 1 , '21333354.0' ,'1',''
-- 数据
--insert into T_OrderMaterial
--select
--'RO1607010001' , '2345' , '123' , 111 ,null ,null,'1' union all
--select
--'RO1607010001', '3456' , '122' , 55 ,null,null,'1'
试一下 这个 谢谢了
SELECT * FROM (SELECT *,MIN(ID)OVER(PARTITION BY OrderID) AS RN FROM T_OrderMaterial) AS a LEFT JOIN T_OrderProcess AS b ON a.OrderID=b.OrderID AND a.RN=a.ID