(一)
sql语句中的嵌套
ISNULL
((SELECT SUM(b.qty)
FROM TestTable AS b
WHERE b.qty > 0 AND b.[date] = c.[date] AND b.productID = c.productID), 0)
((SELECT SUM(a.qty)
FROM TestTable AS a
WHERE a.qty < 0 AND a.[date] = c.[date] AND a.productID = c.productID), 0)
AS OutputNum
FROM TestTable c
GROUP BY date, productID
表1:采购申请表头 表2:采购申请表体
申请单号 申请日期 制表人 申请单号 物料编号 申请数量 回货日期
PR00001 05-01-05 A PR00001 38000001 200 05-02-10
PR00001 38000002 500 05-02-20
表3:采购订单表头 表4:采购订单表体
订单号 订单日期 制表人 申请单号 订单号 物料编号 订单数量 回货日期
PO00001 05-01-07 B PR00001 PO00001 38000001 200 05-02-10
PO00002 05-01-08 B PR00001 PO00002 38000002 500 05-02-10
采购订单查询:
SELECT A.订单号,A.申请单号,B.物料编号,B.订单数量,A.订单日期,B.回货日期
FROM 采购订单表体 B INNER JOIN 采购订单表头 A ON B.订单号=A.订单号
采购申请单查询:
SELECT C.申请单号,C.申请日期,D.物料编号,D.申请数量,D.回货日期
FROM 采购申请单表头 C INNER JOIN 采购申请单表体 D ON C.申请单号=D.申请单号
求怎样把采购订单查询嵌套到采购申请单查询是去,才能只使用一个select语句就能查询出如下结果:
申请单号 申请日期 物料编号 申请数量 申请单回货日期 订单号 订单日期 订单数量 订单回货日期
PR00001 05-01-05 38000001 200 05-02-10 PO00001 05-01-07 200 05-02-10
PR00001 05-01-05 38000002 500 05-02-20 PO00002 05-01-08 500 05-02-10
FROM
(SELECT A.订单号 订单号,A.申请单号 申请单号,B.物料编号 物料编号,B.订单数量 订单数量,A.订单日期 订单日期,B.回货日期 回货日期
FROM 采购订单表体 B INNER JOIN 采购订单表头 A ON B.订单号=A.订单号) E,
(SELECT C.申请单号 申请单号,C.申请日期 申请日期,D.物料编号 物料编号,D.申请数量 申请数量,D.回货日期 回货日期
FROM 采购申请单表头 C INNER JOIN 采购申请单表体 D ON C.申请单号=D.申请单号) F WHERE F.申请单号=C.申请单号
select a.name,a.sex,a.age
from student a,score b
where a.student_id=b.student_id and b.math_score>=90
order by a.sex
select Column_ID,Column_Name,Parent_ID,(select Column_Name from [Sort] where Column_ID=a.Parent_ID) Parent_Name,
(select Parent_ID from [Sort] where Column_ID=a.Parent_ID) Fathers_ID,
(select Column_Name from [Sort] where Column_ID=(select Parent_ID from [Sort] where Column_ID=a.Parent_ID)) Father_Name
from [sort] a where Column_Depth=3 order by father_Name desc,Parent_Name desc,Column_Name desc
比较牛B的sql语句,可以嵌套查询,还可以根据临时字段名排序