表一,
字段: id col1 col2 Qty1 Qty2
数据: 1 101 1001 0 0
数据: 2 102 1002 0 0表二,
字段: type col1 col2 col3
数据: qty1 101 1001 23
数据: qty2 101 1001 18
数据: qty1 102 1003 34update表一,得到的结果
字段: id col1 col2 Qty1 Qty2
数据: 1 101 1001 23 18
数据: 2 102 1002 34 0列 col1 和 col2 为判断条件!这样的一条sql 应该怎么写! 要高效率的! 谢啦!!
字段: id col1 col2 Qty1 Qty2
数据: 1 101 1001 0 0
数据: 2 102 1002 0 0表二,
字段: type col1 col2 col3
数据: qty1 101 1001 23
数据: qty2 101 1001 18
数据: qty1 102 1003 34update表一,得到的结果
字段: id col1 col2 Qty1 Qty2
数据: 1 101 1001 23 18
数据: 2 102 1002 34 0列 col1 和 col2 为判断条件!这样的一条sql 应该怎么写! 要高效率的! 谢啦!!
from 表一 a inner join 表二 b
on a.col1=b.col1 and a.col2=b.col2
and right(b.[type],1)='1'
inner join 表二 c
on a.col1=c.col1 and a.col2=c.col2
and right(c.[type],1)='2'
INSERT #T1 SELECT
1, 101, 1001 , 0, 0 UNION ALL SELECT
2 , 102 , 1002 ,0, 0
CREATE TABLE #T2(TYPE VARCHAR(5), col1 INT, col2 INT, COL3 INT)
INSERT #T2 SELECT
'qty1', 101, 1001 , 23 UNION ALL SELECT
'qty2', 101, 1001 , 18 UNION ALL SELECT
'qty1', 102, 1002 , 34
UPDATE #T1
SET qTY1=B.QTY1,qTY2=B.QTY2
FROM #T1 A,
(SELECT COL1,COL2,
QTY1=MAX(CASE WHEN TYPE='QTY1' THEN COL3 END),
QTY2=MAX(CASE WHEN TYPE='QTY2' THEN COL3 END)
FROM #T2
GROUP BY COL1,COL2) B
WHERE A.COL1=B.COL1 AND A.COL2=B.COL2 SELECT * FROM #T1
id col1 col2 Qty1 Qty2
----------- ----------- ----------- ----------- -----------
1 101 1001 23 18
2 102 1002 34 NULL(2 行受影响)DROP TABLE #T1
DROP TABLE #T2
update a
set qty1=b.col3
from 表1 a,表2 b
where a.col1=b.col1 and a.col2=b.col2 and type='qty1'
update a
set qty2=b.col3
from 表1 a,表2 b
where a.col1=b.col1 and a.col2=b.col2 and type='qty2'