麻烦的SQL语如何写(100)

  • 主题发起人 主题发起人 yuzhizhi
  • 开始时间 开始时间
Y

yuzhizhi

Unregistered / Unconfirmed
GUEST, unregistred user!
TableA单号 发货日期 记录数 确认日期 发货方 收货方a00 1 2009年4月4日 3 2009年4月28日 A Ba002 2009年4月15日 2 2009年5月1日 A Ca003 2009年4月16日 3 2009年5月11日 B Aa004 2009年5月1日 2 2009年5月15日 C Ea005 2009年5月11日 1 2009年5月24日 D C..... TableB单号 条码 明细数量 发货方 收货方a001 amb0014a 5 A B a001 amb0013a 4 A Ba001 amb0013c 2 A B a002 amb00144 11 A Ca002 amb0014e 5 A C a003 amc00141 6 B A a003 amb00144 2 B A a003 ame00141 1 B A a004 ame11004 20 C Ea004 amd10410 2 C Ea005 amd01011 5 D C............. 我想得到如下TableC: TableC款号 总数 款号 明细数量 发货方 收货方 发货日期 确认日期 a001 11 amb0014a 5 A B 2009年4月4日 2009年4月28日 amb0013a 4 A B amb0013c 2 A B a002 16 amb00144 11 A C 2009年4月15日 2009年5月1日 amb0014e 5 A C a003 9 amc00141 6 B A 2009年4月16日 2009年5月11日 amb00144 2 B A ame00141 1 B A a004 22 ame11004 20 C E 2009年5月1日 2009年5月15日 amd10410 2 C Ea005 5 amd01011 5 D C 2009年5月11日 2009年5月24日............条件:根据发货时间发货与发货方与跨月数据并且汇总明细数量来得到如上TableC.我的acess中的SQL语句如下,请Acess SQL高手指点一下我的语句在哪些地方需要修改,最好给出语句:select * From (Select a.发货方,a.款号,a.收货方,a.确认日期,a.记录数,a.收货日期,b.明细数量,b.款号,b.发货方,b.收货方 from TabelA a left outer join TableB b on (a.发货方=b.发货方 and a.单号=b.单号) where (a.发货日期>=:StartDate and 发货日期<=:StopDate ) and (a.TFNOTE_TO_LOC=:Shop_Name) order by a.发货日期,a.发货单号)aa where (year(aa.发货日期)=year(aa.确认日期) and month(aa.发货日期)<>month (aa.确认日期) or (year(aa.发货日期)=year(aa.确认日期) and month(aa.发货日期)=month (aa.确认日期))'
 
Select A.单号 as 款号, (Select Count(*) From TableB X Where X.发货方=A.发货方 and X.单号=A.单号) as 总数, b.条码 as 款号, b.明细数量, b.发货方, b.收货方, a.发货日期, a.确认日期from TabelA a left join TableB b on (a.发货方=b.发货方 and a.单号=b.单号)where (a.发货日期>=:StartDate and 发货日期<=:StopDate ) and (a.TFNOTE_TO_LOC=:Shop_Name)order by A.单号你的第二个where,我没看明白,感觉有没有都一样。
 
to znxia:第二个where的确没什么作用,我想得到第三个表这样.不知道如何做了?请教?
 
若有个别语法错误,请自己调试Select iif(Min款号=款号, 单号, Null) as 单号1, iif(Min款号=款号, 总数, Null) as 总数1, 款号, 明细数量, 发货方, 收货方, iif(Min款号=款号, 发货日期, Null) as 发货日期1, iif(Min款号=款号, 确认日期, Null) as 确认日期1From ( Select A.单号, (Select Count(*) From TableB X Where X.发货方=A.发货方 and X.单号=A.单号) as 总数, (Select Min(条码) From TableB X Where X.发货方=A.发货方 and X.单号=A.单号) as Min款号, b.条码 as 款号, b.明细数量, b.发货方, b.收货方, a.发货日期, a.确认日期 from TabelA a left join TableB b on (a.发货方=b.发货方 and a.单号=b.单号) where (a.发货日期>=:StartDate and 发货日期<=:StopDate ) and (a.TFNOTE_TO_LOC=:Shop_Name) ) As Xorder by 单号,款号
 
to znxia:我在SQL Server 中测试通过,正在转换中,谢谢!Select (case when Min款号=款号 then 单号 else null end ) as 单号1, (case when Min款号=款号 then 总数 else null end ) as 总数1, (case when Min款号=款号 then 发货日期 else null end ) as 发货日期1, (case when Min款号=款号 then 发货方 else null end ) as 发货方1, (case when Min款号=款号 then 收货方 else null end ) as 收货方1, 款号, 明细数量From ( Select A.单号, (Select sum(明细数量) From TableB c Where c.发货方=A.发货方 and c.单号=A.单号) as 总数, (Select Min(条码) From TableB c Where c.发货方=A.发货方 and c.单号=A.单号) as Min款号, b.条码 as 款号, b.明细数量, b.发货方, b.收货方, a.发货日期, a.确认日期 from TableA a left join TableB b on (a.发货方=b.发货方 and a.单号=b.单号) where (a.发货日期>='2009-05-01' and a.发货日期<='2009-05-31' ) and (a.收货方<>'') ) as Xorder by 单号,款号
 
znxia 真是诲人不倦呀。
 
后退
顶部