Foxtable(狐表)用户栏目专家坐堂 → [求助]最近专攻MSSQL,这条语句好有难度!


  共有5103人关注过本帖树形打印复制链接

主题:[求助]最近专攻MSSQL,这条语句好有难度!

帅哥哟,离线,有人找我吗?
jnletao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:943 积分:7802 威望:0 精华:0 注册:2013/7/7 13:37:00
[求助]最近专攻MSSQL,这条语句好有难度!  发帖心情 Post By:2014/1/8 10:21:00 [只看该作者]

Create view [dbo].[vBillDetailMx] As select tgoods.typecode, tgoods.goodsbrand, tgoods.goodstype, tgoods.ifdiscount, tgoods.supply, tgoods.remark, billid, custname, billcode, tbill.adddate, addtime, mremark, fuser, maker, makerdate, editer, editdate, billtype, inorout, tbill.vipcode, paytype, skmoney, zlmoney, ysmoney, depotname, field1, field2, field3, field4, field5, DatePart(hh,tbill.addtime) as hjtime, (Year(tbill.adddate) + '-' + Month(tbill.adddate)) as hjmonth, DatePart(yyyy,tbill.adddate) as hjyear, DatePart(ww,tbill.adddate) as weekdate, '全部' as allbill, tbilldetail.billdetailid, (Case DatePart(q,tbill.adddate) When 1 Then DatePart(yyyy,tbill.adddate) +'年一季度' When 2 Then DatePart(yyyy,tbill.adddate)+'年二季度' When 3 Then DatePart(yyyy,tbill.adddate)+'年三季度' When 4 Then DatePart(yyyy,tbill.adddate)+'年四季度') End) as hjseason, tvip.vipname, tbilldetail.barcode, tbilldetail.dbillcode, tbilldetail.goodsstyle, tbilldetail.goodsname, tbilldetail.units, tbilldetail.sizegroup, tbilldetail.colorcode, tbilldetail.colorname, tbilldetail.colorvalue, tbilldetail.detailfield1, tbilldetail.detailfield2, tbilldetail.detailfield3, tbilldetail.detailfield4, tbilldetail.detailfield5, tbilldetail.sizecode, tbilldetail.sizename, tbilldetail.number as number1, tbilldetail.money as money1, tbilldetail.inmoney as inmoney1, (Case tbill.billtype When In ('销售出货','销售退货') Then tbilldetail.number*tbilldetail.sign*-1 Else tbilldetail.number*tbilldetail.sign End) as [number], tbilldetail.discount, tbilldetail.price, (Case tbill.billtype When In ('销售出货','销售退货') Then tbilldetail.money*tbilldetail.sign*-1 Else tbilldetail.money*tbilldetail.sign End) as [money], tbilldetail.colposition, tbilldetail.rowposition, tbilldetail.dremark, tbilldetail.sign, tbilldetail.inprice, (Case tbill.billtype When In ('销售出货','销售退货') Then tbilldetail.inprice*tbilldetail.number*tbilldetail.sign*-1 Else tbilldetail.inprice*tbilldetail.number*tbilldetail.sign End) as inmoney, tgoods.dpprice, tgoods.xsprice, tgoods.goodsseason, tgoods.depotup, tgoods.depotdown from (tbill left join (tbilldetail left join tgoods on tbilldetail.goodsstyle=tgoods.goodsstyle) on tbill.billcode=tbilldetail.dbillcode) left join tvip on tbill.vipcode=tvip.vipcode 

 回到顶部
帅哥哟,离线,有人找我吗?
jnletao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:943 积分:7802 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2014/1/8 10:21:00 [只看该作者]

消息 102,级别 15,状态 1,过程 vBillDetailMx,第 1 行
')' 附近有语法错误。

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/1/8 10:23:00 [只看该作者]

给你个建议,你可以把这个语句分成几个过渡表,再通过这些表合成该语句,这样语句就很简单

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/8 10:26:00 [只看该作者]

这个想单纯凭肉眼看出错误来,而且不是自己写的,难度有点高,费时费力,成本比重新写一遍还高图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
jnletao
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:943 积分:7802 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2014/1/8 10:27:00 [只看该作者]

这是个创建视图的 语句,咋能写成过渡表图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/8 10:28:00 [只看该作者]

他的意思是,建立几个视图, 然后再组合这几个视图,创建新的试图,语句就会简洁一点,容易找到问题,和逻辑.

 回到顶部
帅哥哟,离线,有人找我吗?
jnletao
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:943 积分:7802 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2014/1/8 10:30:00 [只看该作者]

有装MSSQL的大能用查询分析器给试试吧,小弟都研究三天了还没成功。
这原本是个access里的查询,现在想转成MSSQL.
这是原语句
Create view [dbo].[vBillDetailMx] As select tgoods.typecode, tgoods.goodsbrand, tgoods.goodstype, tgoods.ifdiscount, tgoods.supply, tgoods.remark, billid, custname, billcode, tbill.adddate, addtime, mremark, fuser, maker, makerdate, editer, editdate, billtype, inorout, tbill.vipcode, paytype, skmoney, zlmoney, ysmoney, depotname, field1, field2, field3, field4, field5, format(tbill.addtime,'hh') as hjtime, format(tbill.adddate,'yyyy-mm') as hjmonth, format(tbill.adddate,'yyyy') as hjyear, format(tbill.adddate,'aaaa') as weekdate, '全部' as allbill, tbilldetail.billdetailid, iif(month(tbill.adddate) in (1,2,3),format(tbill.adddate,'yyyy')+'年一季度',iif(month(tbill.adddate) in (4,5,6),format(tbill.adddate,'yyyy')+'年二季度',iif(month(tbill.adddate) in (7,8,9),format(tbill.adddate,'yyyy')+'年三季度',iif(month(tbill.adddate) in (10,11,12),format(tbill.adddate,'yyyy')+'年四季度')))) as hjseason, tvip.vipname, tbilldetail.barcode, tbilldetail.dbillcode, tbilldetail.goodsstyle, tbilldetail.goodsname, tbilldetail.units, tbilldetail.sizegroup, tbilldetail.colorcode, tbilldetail.colorname, tbilldetail.colorvalue, tbilldetail.detailfield1, tbilldetail.detailfield2, tbilldetail.detailfield3, tbilldetail.detailfield4, tbilldetail.detailfield5, tbilldetail.sizecode, tbilldetail.sizename, tbilldetail.number as number1, tbilldetail.money as money1, tbilldetail.inmoney as inmoney1, iif(tbill.billtype in ('销售出货','销售退货'),tbilldetail.number*tbilldetail.sign*-1,tbilldetail.number*tbilldetail.sign) as [number], tbilldetail.discount, tbilldetail.price, iif(tbill.billtype in ('销售出货','销售退货'),tbilldetail.money*tbilldetail.sign*-1,tbilldetail.money*tbilldetail.sign) as [money], tbilldetail.colposition, tbilldetail.rowposition, tbilldetail.dremark, tbilldetail.sign, tbilldetail.inprice, iif(tbill.billtype in ('销售出货','销售退货'),tbilldetail.inprice*tbilldetail.number*tbilldetail.sign*-1,tbilldetail.inprice*tbilldetail.number*tbilldetail.sign) as inmoney, tgoods.dpprice, tgoods.xsprice, tgoods.goodsseason, tgoods.depotup, tgoods.depotdown from (tbill left join (tbilldetail left join tgoods on tbilldetail.goodsstyle=tgoods.goodsstyle) on tbill.billcode=tbilldetail.dbillcode) left join tvip on tbill.vipcode=tvip.vipcode


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/8 10:31:00 [只看该作者]

没有数据源是试不了的.  jspta 的建议你可以参考一下.

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/1/8 10:31:00 [只看该作者]

以下是引用jnletao在2014-1-8 10:27:00的发言:
这是个创建视图的 语句,咋能写成过渡表图片点击可在新窗口打开查看
你还不如直接用SSMS的视图先创建好几个视图,再拼接在一起,你很多语句看起来重复的,通过一个过渡视图,可以减少很多语句。


 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/1/8 11:02:00 [只看该作者]

以下是引用jnletao在2014-1-8 10:21:00的发言:
Create view [dbo].[vBillDetailMx] As select tgoods.typecode, tgoods.goodsbrand, tgoods.goodstype, tgoods.ifdiscount, tgoods.supply, tgoods.remark, billid, custname, billcode, tbill.adddate, addtime, mremark, fuser, maker, makerdate, editer, editdate, billtype, inorout, tbill.vipcode, paytype, skmoney, zlmoney, ysmoney, depotname, field1, field2, field3, field4, field5, DatePart(hh,tbill.addtime) as hjtime, (Year(tbill.adddate) + '-' + Month(tbill.adddate)) as hjmonth, DatePart(yyyy,tbill.adddate) as hjyear, DatePart(ww,tbill.adddate) as weekdate, '全部' as allbill, tbilldetail.billdetailid, (Case DatePart(q,tbill.adddate) When 1 Then DatePart(yyyy,tbill.adddate) +'年一季度' When 2 Then DatePart(yyyy,tbill.adddate)+'年二季度' When 3 Then DatePart(yyyy,tbill.adddate)+'年三季度' When 4 Then DatePart(yyyy,tbill.adddate)+'年四季度') End) as hjseason, tvip.vipname, tbilldetail.barcode, tbilldetail.dbillcode, tbilldetail.goodsstyle, tbilldetail.goodsname, tbilldetail.units, tbilldetail.sizegroup, tbilldetail.colorcode, tbilldetail.colorname, tbilldetail.colorvalue, tbilldetail.detailfield1, tbilldetail.detailfield2, tbilldetail.detailfield3, tbilldetail.detailfield4, tbilldetail.detailfield5, tbilldetail.sizecode, tbilldetail.sizename, tbilldetail.number as number1, tbilldetail.money as money1, tbilldetail.inmoney as inmoney1, (Case tbill.billtype When In ('销售出货','销售退货') Then tbilldetail.number*tbilldetail.sign*-1 Else tbilldetail.number*tbilldetail.sign End) as [number], tbilldetail.discount, tbilldetail.price, (Case tbill.billtype When In ('销售出货','销售退货') Then tbilldetail.money*tbilldetail.sign*-1 Else tbilldetail.money*tbilldetail.sign End) as [money], tbilldetail.colposition, tbilldetail.rowposition, tbilldetail.dremark, tbilldetail.sign, tbilldetail.inprice, (Case tbill.billtype When In ('销售出货','销售退货') Then tbilldetail.inprice*tbilldetail.number*tbilldetail.sign*-1 Else tbilldetail.inprice*tbilldetail.number*tbilldetail.sign End) as inmoney, tgoods.dpprice, tgoods.xsprice, tgoods.goodsseason, tgoods.depotup, tgoods.depotdown from (tbill left join (tbilldetail left join tgoods on tbilldetail.goodsstyle=tgoods.goodsstyle) on tbill.billcode=tbilldetail.dbillcode) left join tvip on tbill.vipcode=tvip.vipcode 


 回到顶部
总数 12 1 2 下一页