to paoluo(一天到晚游泳的鱼)Select * from st_no Where st_no1>0 And (st_no2<=0 Or st_no3<=0 Or st_no4<=0) 你是不是下面的意思呢? select pp_id(货品代号) from stock(仓库) Where st_no1>0 And (st_no2<=0 Or st_no3<=0 Or st_no4<=0) 这样好像不行吧!
哦,我看错了。就是这样 select pp_id from stock Where st_no1>0 And (st_no2<=0 Or st_no3<=0 Or st_no4<=0)为什么不行??
如果是的话。Create table TEST (st_no Varchar(10), pp_id Varchar(10), pp_sl Int) GO Insert TEST Values('000000','001', 20) Insert TEST Values('000001','001', 10) Insert TEST Values('000002','001', 10) Insert TEST Values('000003','001', 10) Insert TEST Values('000000','002', 50) Insert TEST Values('000001','002', 30) Insert TEST Values('000002','002', 0) Insert TEST Values('000003','002', 0) GO --如果是得到所有的数据 Select * from TEST A Where Exists(Select * from TEST Where pp_id=A.pp_id And st_no='000000' And pp_sl>0) And Exists(Select * from TEST Where pp_id=A.pp_id And st_no<>'000000' And pp_sl<=0 )--如果只是得到货品的ID Select Distinct pp_id from TEST A Where Exists(Select * from TEST Where pp_id=A.pp_id And st_no='000000' And pp_sl>0) And Exists(Select * from TEST Where pp_id=A.pp_id And st_no<>'000000' And pp_sl<=0 ) GO Drop table TEST /* --如果是得到所有的数据 st_no pp_id pp_sl 000000 002 50 000001 002 30 000002 002 0 000003 002 0--如果只是得到货品的ID pp_id 002 */
你是不是下面的意思呢?
select pp_id(货品代号) from stock(仓库) Where st_no1>0 And (st_no2<=0 Or st_no3<=0 Or st_no4<=0)
这样好像不行吧!
select pp_id from stock Where st_no1>0 And (st_no2<=0 Or st_no3<=0 Or st_no4<=0)为什么不行??
库存表stock里有如下安段:
st_no 仓库代号 pp_id 货品代号 pp_sl 货品数量 ....后面字段无关紧要
000000 总仓
000001 一分店仓
000002 二分店仓
000003 三分店仓
00000n N分店仓
问题如下:
如果我的某一货品在000000这个仓库里有货其它任何一个分店没货即满足条件,就求这段代码。
st_no 仓库代号 pp_id 货品代号 pp_sl 货品数量
000000 总仓 001 20
000001 一分店仓 001 10
000002 二分店仓 001 10
000003 三分店仓 001 10
000000 总仓 002 50
000001 一分店仓 002 30
000002 二分店仓 002 0
000003 三分店仓 002 0
(st_no Varchar(10),
pp_id Varchar(10),
pp_sl Int)
GO
Insert TEST Values('000000','001', 20)
Insert TEST Values('000001','001', 10)
Insert TEST Values('000002','001', 10)
Insert TEST Values('000003','001', 10)
Insert TEST Values('000000','002', 50)
Insert TEST Values('000001','002', 30)
Insert TEST Values('000002','002', 0)
Insert TEST Values('000003','002', 0)
GO
--如果是得到所有的数据
Select * from TEST A
Where Exists(Select * from TEST Where pp_id=A.pp_id And st_no='000000' And pp_sl>0)
And Exists(Select * from TEST Where pp_id=A.pp_id And st_no<>'000000' And pp_sl<=0 )--如果只是得到货品的ID
Select Distinct pp_id from TEST A
Where Exists(Select * from TEST Where pp_id=A.pp_id And st_no='000000' And pp_sl>0)
And Exists(Select * from TEST Where pp_id=A.pp_id And st_no<>'000000' And pp_sl<=0 )
GO
Drop table TEST
/*
--如果是得到所有的数据
st_no pp_id pp_sl
000000 002 50
000001 002 30
000002 002 0
000003 002 0--如果只是得到货品的ID
pp_id
002
*/