Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6155|回复: 16

[SQL] SQL练习—进销存

[复制链接]
发表于 2013-11-14 14:33 | 显示全部楼层 |阅读模式
本帖最后由 JLxiangwei 于 2014-3-20 09:27 编辑






【题目】 生成11月份结存数量<5的记录
【要求】 1、用sql代码直接生成
               2、字段顺序需和效果图中字段顺序一致
                     不能手动调整
【奖励】 正确答案奖励20BB
               多解法的,每种解法20BB
【时间】 11月14日-11月29日









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-15 11:57 | 显示全部楼层
  1. transform sum(数量) select 机型 from ( select 机型,日期,类别,数量 from [数据源$a:d] union all select 机型,日期,"本月结存",数量*(-1) from [数据源$a:d] where 类别='出库' union all select 机型,日期,"本月结存",数量 from [数据源$a:d] where 类别<>'出库' ) group by 机型 pivot 类别 in ("出库","入库", "上月结存","本月结存")
复制代码
本来想用连接,语句还没调试出来,先占个楼。
回复

使用道具 举报

发表于 2013-11-15 16:38 | 显示全部楼层

师父 先写了个思路最直白 嗷呜 勉强给写出来了

  1. select 机型,iif(上月结存=0,null,上月结存) as 上月结存,iif(入库=0,null,入库) as 入库,iif(出库=0,null,出库) as 出库,本月结存      from (select 机型,sum(iif(类别="上月结存",数量,0)) as 上月结存,sum(iif(类别="入库",数量,0)) as 入库,sum(iif(类别="出库",数量,0)) as 出库,上月结存+入库-出库 as 本月结存 from [数据源$] group by 机型) where 本月结存< 5
复制代码
回复

使用道具 举报

发表于 2013-11-15 21:15 | 显示全部楼层
作个记号
回复

使用道具 举报

发表于 2013-11-16 12:06 | 显示全部楼层
本帖最后由 天空的雨 于 2013-11-20 17:22 编辑

一、
SELECT A.机型,B.上月结存,c.入库,D.出库,((0&上月结存)*1+(0&入库)*1-(0&出库)*1)*1 as 本月结存 FROM((((SELECT DISTINCT 机型 FROM[数据源$A:D])A     LEFT JOIN (SELECT 机型,SUM(数量) AS 上月结存 FROM[数据源$A:D] WHERE 类别='上月结存' GROUP BY 机型)B           ON B.机型= A.机型 )    LEFT JOIN (SELECT 机型,SUM(数量) as 入库 FROM[数据源$A:D] WHERE 类别='入库' GROUP BY 机型)C           ON A.机型=C.机型) LEFT JOIN (SELECT 机型,SUM(数量) as 出库 FROM[数据源$A:D] WHERE 类别='出库' GROUP BY 机型)d on a.机型=D.机型) where ((0&上月结存)*1+(0&入库)*1-(0&出库)*1)*1<5

二、
SELECT 机型, SUM(0&IIF(类别="上月结存",数量,0)+0) as 上月结存,
SUM(0&IIF(类别="入库",数量,0)*1) as 入库,
SUM(0&IIF(类别="出库",数量,0)*1) as 出库,
SUM(0&IIF(类别="上月结存",数量,0)+0)+SUM(0&IIF(类别="入库",数量,0)*1)-SUM(0&IIF(类别="出库",数量,0)*1) AS 本月结存
from[数据源$]
GROUP BY 机型
HAVING SUM(0&IIF(类别="上月结存",数量,0)+0)+SUM(0&IIF(类别="入库",数量,0)*1)-SUM(0&IIF(类别="出库",数量,0)*1)<5
疑问:HAVING 5<5?不出错,但得不到结果?前面那个5能不能表示得到的新表中的第5列?



回复

使用道具 举报

发表于 2013-11-16 20:30 | 显示全部楼层
学习和关注,请赐教!
回复

使用道具 举报

发表于 2013-11-18 20:24 | 显示全部楼层
本帖最后由 sliang28 于 2013-11-18 22:33 编辑

生成的sql语句{:3912:}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-11-18 21:58 | 显示全部楼层
本帖最后由 车仁静 于 2013-11-19 13:14 编辑
  1. SELECT 机型,SUM(上月结存) AS 上月结存 ,SUM(入库) AS 入库,SUM(出库) AS 出库,SUM(上月结存+入库-出库) AS 本月结存 FROM (SELECT 机型,IIF(类别="上月结存",数量,0) AS 上月结存,IIF(类别="入库",数量,0) AS 入库,IIF(类别="出库",数量,0) AS 出库 FROM [数据源$A1:D] WHERE 机型 IS NOT NULL) GROUP BY 机型 HAVING SUM(上月结存+入库-出库)<5
复制代码
  1. SELECT 机型,SUM(IIF(类别="上月结存",数量,0)) AS 上月结存,SUM(IIF(类别="入库",数量,0)) AS 入库,SUM(IIF(类别="出库",数量,0)) AS 出库, SUM(IIF(类别="上月结存",数量,0))+SUM(IIF(类别="入库",数量,0))-SUM(IIF(类别="出库",数量,0)) AS 本月结存 FROM [数据源$] GROUP BY 机型 HAVING SUM(IIF(类别="上月结存",数量,0))+SUM(IIF(类别="入库",数量,0))-SUM(IIF(类别="出库",数量,0))<5
复制代码
回复

使用道具 举报

发表于 2013-11-19 08:52 | 显示全部楼层
谢谢分享,学习学习。
回复

使用道具 举报

发表于 2013-11-29 09:27 | 显示全部楼层
  1. select 机型,上月结存,iif(出库量>0,出库量) as 出库,iif(入库量>0,入库量) as 入库,上月结存+入库量-出库量 as 本月结存 from (select 机型,sum(iif(类别='上月结存',数量,0)) as 上月结存,sum(iif(类别='出库',数量,0)) as 出库量,sum(iif(类别='入库',数量,0)) as 入库量 from [数据源$] group by 机型) where 上月结存+入库量-出库量<5
复制代码
``
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 04:46 , Processed in 0.302262 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表