sql语句中的嵌套
(⼀)
sql语句中的嵌套
原来⼀直认为sql语句再简单不过了,可是今天写起嵌套的时候频频出问题,⼀点也不顺⼿。发现在外部select结构的分组查询对⼦select语句没有作⽤,经过⾼⼿指点了⼀种好的⽅法:ISNULL,将⼦select语句放在之下,查询到条件符合就执⾏,没有符和的就跳过,不错不错,很好的完成了⼦句的查询,谢谢⽺过指点哦~~
初始表TestTable中有date, productID,qty三个字段,qty有正有负,要按照date, productID对qty进⾏统计,实⾏正数累加,负数累加,读到视图中
SELECT date, productID,
ISNULL
((SELECT SUM(b.qty)
FROM TestTable AS b
WHERE b.qty > 0 AND b.[date] = c.[date] AND b.productID = c.productID), 0)
AS InputNum,
增加字段的sql语句ISNULL
((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
解:SELECT  F.申请单号,    F.申请⽇期,    F.物料编号,  F.申请数量,    F.申请单回货⽇期,  E.订单号,    E.订单⽇期,    E.订单数量,  E.订单回货⽇期
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语句,可以嵌套查询,还可以根据临时字段名排序
总结:SQL 语⾔极其灵活。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。