27,580
社区成员
发帖
与我相关
我的任务
分享
a表数据如下
aId qty dc wh ChkFlag note remark1
1 20 1 1 N NULL 1
3 20 1 2 n NULL 2
4 60 1 2 n NULL 3
5 20 1 4 n NULL 4
5 20 1 5 n NULL 5
B表数据如下:
bId qty dc op wh ChkFlag note remark2
3 20 1 2 1 N NULL 1
4 20 1 3 2 N NULL 2
5 -20 1 6 3 N NULL 3
8 20 1 2 4 N NULL 4
5 20 1 2 5 N NULL 5
IF OBJECT_ID('Tempdb..#ta','u')IS NOT NULL
DROP TABLE #ta
SELECT a.* INTO #ta
FROM a INNER JOIN b ON aid = bid AND a.dc = b.dc AND a.wh = b.wh AND a.qty = b.qty * op
IF OBJECT_ID('Tempdb..#tb','u')IS NOT NULL
DROP TABLE #tb
SELECT b.* INTO #tb
FROM a INNER JOIN b ON aid = bid AND a.dc = b.dc AND a.wh = b.wh AND a.qty = b.qty * op
UPDATE a
SET a.ChkFlag='Y'
FROM A
WHERE EXISTS (SELECT 1 FROM #ta ta WHERE a.aid=ta.aid AND a.qty=ta.qty AND a.dc=ta.dc AND a.wh=ta.wh AND a.chkflag=ta.chkflag AND a.note=ta.note AND a.remark1=ta.remark1)
UPDATE B
SET B.ChkFlag='Y'
FROM b
WHERE EXISTS (SELECT 1 FROM #tb tb WHERE b.bid=tb.bid AND b.qty=tb.qty AND b.dc=tb.dc AND b.wh=tb.wh AND b.chkflag=tb.chkflag AND b.note=tb.note AND b.remark2=tb.remark2 AND b.op=tb.op)
update A表 set a.chkflag='y' from A表
inner join B表
on A表.aid= B表.aid and
A表.dc= B表.dc and
A表.wh= B表.wh and
A表.qty= B表.qty*op
update A表 set a.chkflag='y' where A表.Aid in
(select Aid from A表
inner join B表
on A表.aid= B表.aid and
A表.dc= B表.dc and
A表.wh= B表.wh and
A表.qty= B表.qty*op
)
[/quote]
update A表 set a.chkflag='y' from A表
inner join B表
on A表.aid= B表.aid and
A表.dc= B表.dc and
A表.wh= B表.wh and
A表.qty= B表.qty*op
update A表 set a.chkflag='y' where A表.Aid in
(select Aid from A表
inner join B表
on A表.aid= B表.aid and
A表.dc= B表.dc and
A表.wh= B表.wh and
A表.qty= B表.qty*op
)
----------------------------------------------------------------
-- Author :DBA_HuangZJ(發糞塗牆)
-- Date :2014-07-11 08:16:55
-- Version:
-- Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
-- May 14 2014 18:34:29
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go
create table [A]([aId] int,[qty] int,[dc] int,[wh] int,[ChkFlag] varchar(1),[note] sql_variant,[remark1] int)
insert [A]
select 1,20,1,1,'N',null,1 union all
select 3,20,1,2,'n',null,2 union all
select 4,60,1,2,'n',null,3 union all
select 5,20,1,4,'n',null,4 union all
select 5,20,1,5,'n',null,5
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go
create table [b]([bId] int,[qty] int,[dc] int,[op] int,[wh] int,[ChkFlag] varchar(1),[note] sql_variant,[remark2] int)
insert [b]
select 3,20,1,2,1,'N',null,1 union all
select 4,20,1,3,2,'N',null,2 union all
select 5,-20,1,6,3,'N',null,3 union all
select 8,20,1,2,4,'N',null,4 union all
select 5,20,1,2,5,'N',null,5
--------------开始查询--------------------------
IF OBJECT_ID('Tempdb..#t','u')IS NOT NULL
DROP TABLE #t
SELECT aid INTO #t
FROM a INNER JOIN b ON aid = bid AND a.dc = b.dc AND a.wh = b.wh AND a.qty = b.qty * op
UPDATE a
SET a.ChkFlag='Y'
FROM A INNER JOIN #t ON A.aId=#t.aId
UPDATE B
SET B.ChkFlag='Y'
FROM b INNER JOIN #t ON bId=#t.aId
SELECT * FROM a
SELECT * FROM b
----------------结果----------------------------
/*
aId qty dc wh ChkFlag note remark1
----------- ----------- ----------- ----------- ------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------
1 20 1 1 N NULL 1
3 20 1 2 n NULL 2
4 60 1 2 Y NULL 3
5 20 1 4 n NULL 4
5 20 1 5 n NULL 5
(5 行受影响)
bId qty dc op wh ChkFlag note remark2
----------- ----------- ----------- ----------- ----------- ------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------
3 20 1 2 1 N NULL 1
4 20 1 3 2 Y NULL 2
5 -20 1 6 3 N NULL 3
8 20 1 2 4 N NULL 4
5 20 1 2 5 N NULL
*/