关于"冲红"数据,请高手指教
TAZS
TAZS 2030.12 接头2030.12 PZ SET CIN-06-0055 来料验收入库 增 2006-12-22 13:03:24.000 80.00 .00 TAZS
TAZS 2030.12 接头2030.12 PZ SET CIN-06-0103 来料验收入库 增 2006-12-22 13:03:50.000 12.00 .00 TAZS
TAZS 7866-03 针织7866-03 PCS CIN-06-0001 来料验收入库 增 2006-11-08 15:44:01.000 11472.00 .00 TAZS
TAZS 7866-03 PCS OU060012 其他出库单 减 2006-10-27 18:56:15.000 .00 11472.00 TAZS
TAZS 7866-03 针织 7866-03 PCS CIN-06-0001 来料验收入库 减 2006-11-11 14:19:21.000 .00 11472.00
------解决方案--------------------你的进销存表没有主键吗?你的第一条记录和第四条记录完全一样.
因为你没有主键只能这样查:
select distinct A.WareHId,A.Itemid,A.inQty,A.outQty,B.inQty,B.outQty,A.Billid,A.Iostyle,A.comm from inviolog A inner join inviolog B on
A.corpcode=B.corpcode and A.warehid=B.WareHid and A.Itemid=B.Itemid
and charindex(A.iostyle,B.iostyle)> 0 and a.inqty=b.Outqty and A.billid=B.Billid and ((A.ioflag= '增 ' and B.ioflag= '减 ') or (A.ioflag= '减 ' and B.ioflag= '增 '))
这样查出来的应该是需要冲红的记录.
如果有主键就好办了.
------解决方案--------------------设置个联合主键不行吗
------解决方案--------------------LZ,你把表结构贴出来啊
光看你的SELECT语句太抽象了
------解决方案--------------------建立扩展你的表结构吧,将红冲和被红冲记录做一个标记flag,查询不就好办了
------解决方案--------------------SELECT *
FROM table1 a
WHERE NOT EXISTS
(SELECT 1
FROM table1 b
WHERE b.单据编号=a.单据编号
AND b.单据类别=
CASE a.单据类别
WHEN '来料验收入库 ' THEN '来料验收入库(反审核) '
WHEN '其他出库单 ' THEN '其他出库单(反审核) '
END
AND b.出入标志=
CASE a.出入标志
WHEN '增 ' THEN '减 '
WHEN '减 ' THEN '增 '
END
AND b.入库数=a.出库数
AND b.出库数=a.入库数)