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小时内删除。
发表评论