这个问题怎么解决呢?SQL

lijun2000 2009-03-20 04:52:27
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD
)
GROUP BY 型号
PIVOT cd;


我要得到特定的时间的查询结果.比如说从每个月的25号到次月的26号之间的结果应该怎么把条件加到那上面的SQL语句里去呢?
获取具体的时间我可以在窗体上得到,但查询的条件不知道怎么加上去?
...全文
152 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
那这样的交叉查询有什么办法查询动态的查询日期吗?
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
都不行呀
wwwwb 2009-03-23
  • 打赏
  • 举报
回复
PARAMETERS cs1 Long,cs2 long;
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM
(

select * FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD
) select * FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD
)
WHERE cd Between (IIf(IsNull(cs1),#9/1/2007#,cs1)) And (IIf(IsNull(cs2),#12/31/2108#,cs2)
))
GROUP BY 型号
PIVOT cd;

调用:
Dim dd As QueryDef
Set dd = CurrentDb.QueryDefs("查询名")
dd.Parameters("cs1").Value =你的値
dd.Parameters("cs2").Value =你的値
ACMAIN_CHM 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lijun2000 的回复:]
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
WHERE (((计划表.日期) Between (IIf(IsNull([forms]![计划排程]![StartDate]),#9/1/2007#,[forms]![计划排程]![StartDate])) And (IIf(IsNull([forms]![计划排程]![EndDate]),#12/31/2108#,[forms]![计划排程]![EndDate]))))
union all
select 产…
[/Quote]

交叉查询中不支持 forms!myForm!text1 这种从窗体获得的控件。 只能通过VB代码生成SQL语句。交叉表有很多限制。

QQ群 48866293 / 12035577 / 7440532 / 13666209
ACCESS专业论坛
http://www.accessbbs.cn/bbs/index.php .
http://www.office-cn.net/vvb/ .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
wwwwb 2009-03-23
  • 打赏
  • 举报
回复
如果日期条件是一样的:
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM
(

select * FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD
) select * FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD
)
WHERE cd Between (IIf(IsNull([forms]![计划排程]![StartDate]),#9/1/2007#,[forms]![计划排程]! [StartDate])) And (IIf(IsNull([forms]![计划排程]![EndDate]),#12/31/2108#,[forms]![计划排程]! [EndDate])
))
GROUP BY 型号
PIVOT cd;
ACMAIN_CHM 2009-03-23
  • 打赏
  • 举报
回复
上传你的MDB文件,否则根本猜不出你的字段名。

QQ群 48866293 / 12035577 / 7440532 / 13666209
ACCESS专业论坛
http://www.accessbbs.cn/bbs/index.php .
http://www.office-cn.net/vvb/ .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
WHERE (((计划表.日期) Between (IIf(IsNull([forms]![计划排程]![StartDate]),#9/1/2007#,[forms]![计划排程]![StartDate])) And (IIf(IsNull([forms]![计划排程]![EndDate]),#12/31/2108#,[forms]![计划排程]![EndDate]))))
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
WHERE (((生产单HD.开单日期) Between (IIf(IsNull([forms]![计划排程]![StartDate]),#9/1/2007#,[forms]![计划排程]![StartDate])) And (IIf(IsNull([forms]![计划排程]![EndDate]),#12/31/2108#,[forms]![计划排程]![EndDate]))))
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD
WHERE (((生产单HD.开单日期) Between (IIf(IsNull([forms]![计划排程]![StartDate]),#9/1/2007#,[forms]![计划排程]![StartDate])) And (IIf(IsNull([forms]![计划排程]![EndDate]),#12/31/2108#,[forms]![计划排程]![EndDate]))))
)
GROUP BY 型号
PIVOT cd;
运行时老是报不能有效识别的字段???
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
运行窗体 计划排程,点命令1
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
已经上传
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
CurrentProject.Connection.Execute ("drop view dd")
we = "TRANSFORM Sum(qty) AS qtyOfSum SELECT 型号 FROM (select * FROM (select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty "
we = we + " FROM 计划表 union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量 "
we = we + " FROM 生产单HD union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量"
we = we + " from 生产单HD) WHERE DateSerial(mid(cd,1,4),mid(cd,6,2),mid(cd,9,2)) Between "
we = we + "#" & Me.StartDate & "# And #" & Me.EndDate & "#"
we = we + ") GROUP BY 型号 PIVOT cd"
Set dd = CurrentDb.CreateQueryDef("dd", we)
DoCmd.OpenQuery "dd"

放在窗体1的命令1单击事件中。
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 lijun2000 的回复:]
PARAMETERS cs1 DateTime, cs2 DateTime;
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM [select * FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD)]. AS [%$##@_Ali…
[/Quote]

在查询中是可以的,不过要输入参数,用我的代码可以直接打开一个
新的查询,子窗体不行
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 WWWWA 的回复:]
只能用下述代码:
CurrentProject.Connection.Execute ("drop view dd")
we = "TRANSFORM Sum(qty) AS qtyOfSum SELECT 型号 FROM (select * FROM (select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty "
we = we + " FROM 计划表 union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量 "
we = we + " FROM 生产单HD union all select 产品型号,format(开单日期,'yyyy-…
[/Quote]
这些代码放在哪里呢,能不做好一个上传给我?谢谢
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
修改一下
CurrentProject.Connection.Execute ("drop view dd")
we = "TRANSFORM Sum(qty) AS qtyOfSum SELECT 型号 FROM (select * FROM (select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty "
we = we + " FROM 计划表 union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量 "
we = we + " FROM 生产单HD union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量"
we = we + " from 生产单HD) WHERE DateSerial(mid(cd,1,4),mid(cd,6,2),mid(cd,9,2)) Between "
we = we + "#" & Me.StartDate & "# And #" & Me.EndDate & "#"
we = we + ") GROUP BY 型号 PIVOT cd"
Set dd = CurrentDb.CreateQueryDef("dd", we)
DoCmd.OpenQuery "dd"

主要是对日期的判断
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
PARAMETERS cs1 DateTime, cs2 DateTime;
TRANSFORM Sum(qty) AS qtyOfSum
SELECT 型号
FROM [select * FROM
(
select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty
from 计划表
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量
from 生产单HD
union all
select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量
from 生产单HD)]. AS [%$##@_Alias]
WHERE mid(cd,1,10) Between format((Date()-Day(Date())-Day(Date()-Day(Date()))+26),'yyyy-mm-dd') And format((date()),'yyyy-mm-dd')
)
GROUP BY 型号
PIVOT cd;

这样子可以不,日期可以自动生成,
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
只能用下述代码:
CurrentProject.Connection.Execute ("drop view dd")
we = "TRANSFORM Sum(qty) AS qtyOfSum SELECT 型号 FROM (select * FROM (select 型号,format(日期,'yyyy-mm-dd') & '-0-计划' as cd,计划数量 as qty "
we = we + " FROM 计划表 union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-1-开单',开单数量 "
we = we + " FROM 生产单HD union all select 产品型号,format(开单日期,'yyyy-mm-dd') & '-2-完成',完成数量"
we = we + " from 生产单HD) WHERE DateSerial(mid(cd,1,4),mid(cd,6,2),mid(cd,8,2) Between "
we = we + "#" & Me.StartDate & "# And #" & Me.EndDate & "#"
we = we + ")) GROUP BY 型号 PIVOT cd"
Set dd = CurrentDb.CreateQueryDef("dd", we)
DoCmd.OpenQuery "dd"
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
那我想要把结果显示在窗体上有什么办法呢?可以不用交叉查询,但要得到我的结果
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
那我想要把结果显示在窗体上有什么办法呢?
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 lijun2000 的回复:]
可是结果不能显示出现窗体上噢!
[/Quote]
当然,因为日期不同,产生的日期字段也不同,除非你将所有可能的
日期生成一个表,以此表来生成子窗体中的字段
lijun2000 2009-03-23
  • 打赏
  • 举报
回复
可是结果不能显示出现窗体上噢!
WWWWA 2009-03-23
  • 打赏
  • 举报
回复
运行窗体 计划排程,点命令1
加载更多回复(11)

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧