SQLstr = "select dtime, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))";
总是提示"试图执行的查询中不包含作为合计函数一部分的特定表达式 'dtime'"
数据库access ,表如下图
16 个解决方案
#1
dtime是啥??
如果你是想获取最大值那一行的dtime
你需要做个嵌套查询
先查出最大值,然后根据最大值再去查那一行数据
如果你是想获取最大值那一行的dtime
你需要做个嵌套查询
先查出最大值,然后根据最大值再去查那一行数据
#2
而且你这逻辑也很成问题
最大值可能有多行(值相同),你到底要哪一行的dtime??
自己先把逻辑弄清楚,再想如何实现这个功能
最大值可能有多行(值相同),你到底要哪一行的dtime??
自己先把逻辑弄清楚,再想如何实现这个功能
#3
select max(dtime) as dt1 , MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值
from tbl2 group by DATEPART(yyyy,dtime)
这么写查出来 dt1 的值, 沒啥意义.
#4
需求是分别找出2013年,2014年,2015年 ,h1的最大值,最小值,年份是可选,不确定的,
实现的想法是先对年份进行分组,直接where条件出2013,2014,2015,sql语句如下,select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))
结果表内容是
年份找到后再找出年份中的最大值,最小值,显示年,最大值,最小值,语句就如下 SQLstr = "select dtime, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))";
只要在第一个select 后面加上DATEPART('yyyy',dtime) as 年,就出错,dtime是日期类型的
#5
SQLstr = "select MAX(DATEPART('yyyy',dtime))as 年, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between '2013' and '2015' group by DATEPART('yyyy',dtime))";
只显示2015年的最大值的记录,2013年,2014年的都没有呢,
只显示2015年的最大值的记录,2013年,2014年的都没有呢,
#6
既然你只要找到年份的最大值最小值,详细时间还显示来干啥
#7
SQLstr = "select
DATEPART('yyyy',dtime)), MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))";
#8
我要显示在2013年中h1的最大值,在2014年中h1的最大值,2015年中h1的最大值
#9
是啊,那你显示完最大值,前面带上是哪一年就好了啊,也就是
DATEPART('yyyy',dtime)
这个东西,只要年份
不要把年月日时分秒都弄出来
DATEPART('yyyy',dtime)
这个东西,只要年份
不要把年月日时分秒都弄出来
#10
既然你是按年group by分组查询的
月日时分秒的信息早被合并没有了,上哪里取去
月日时分秒的信息早被合并没有了,上哪里取去
#11
报错呀"试图执行的查询中不包含作为合计函数一部分的特定表达式 'DATEPART('yyyy',dtime)' 。"我之前就是这么写的,一直报这个错误,加上MAX不出错了,只显示2015年了
要崩溃了
#12
我就是这个意思,只要年份,
SQLstr = "select DATEPART('yyyy',dtime)), MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))"
这么写就报错,怎么才能把年份显示出来呢,
#13
只要使用了max集函数,再写其它字段就出错,写的测试语句
SQLstr = "select dtime, MAX(h1)as 最大值 from realData";
也会报同样的错误:试图执行的查询中不包含作为合计函数一部分的特定表达式 'dtime'
大家有没有其它的方法,能解决我要的需求呢
SQLstr = "select dtime, MAX(h1)as 最大值 from realData";
也会报同样的错误:试图执行的查询中不包含作为合计函数一部分的特定表达式 'dtime'
大家有没有其它的方法,能解决我要的需求呢
#14
select DATEPART(yyyy,dtime) as dtime, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值
from realData group by DATEPART(yyyy,dtime)
having DATEPART(yyyy,dtime)>= '2013' and DATEPART(yyyy,dtime) <= '2015'
#15
你这个SQL语句还带select嵌套查询的
你先分解开,一个一个测试,看到底是外层报错,还是子查询报错,再想办法怎么改
你先分解开,一个一个测试,看到底是外层报错,还是子查询报错,再想办法怎么改
#16
谢谢,比我写的好多了,简单明了,还是对sql不熟悉呀,继续努力
#1
dtime是啥??
如果你是想获取最大值那一行的dtime
你需要做个嵌套查询
先查出最大值,然后根据最大值再去查那一行数据
如果你是想获取最大值那一行的dtime
你需要做个嵌套查询
先查出最大值,然后根据最大值再去查那一行数据
#2
而且你这逻辑也很成问题
最大值可能有多行(值相同),你到底要哪一行的dtime??
自己先把逻辑弄清楚,再想如何实现这个功能
最大值可能有多行(值相同),你到底要哪一行的dtime??
自己先把逻辑弄清楚,再想如何实现这个功能
#3
select max(dtime) as dt1 , MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值
from tbl2 group by DATEPART(yyyy,dtime)
这么写查出来 dt1 的值, 沒啥意义.
#4
需求是分别找出2013年,2014年,2015年 ,h1的最大值,最小值,年份是可选,不确定的,
实现的想法是先对年份进行分组,直接where条件出2013,2014,2015,sql语句如下,select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))
结果表内容是
年份找到后再找出年份中的最大值,最小值,显示年,最大值,最小值,语句就如下 SQLstr = "select dtime, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))";
只要在第一个select 后面加上DATEPART('yyyy',dtime) as 年,就出错,dtime是日期类型的
#5
SQLstr = "select MAX(DATEPART('yyyy',dtime))as 年, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between '2013' and '2015' group by DATEPART('yyyy',dtime))";
只显示2015年的最大值的记录,2013年,2014年的都没有呢,
只显示2015年的最大值的记录,2013年,2014年的都没有呢,
#6
既然你只要找到年份的最大值最小值,详细时间还显示来干啥
#7
SQLstr = "select
DATEPART('yyyy',dtime)), MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))";
#8
我要显示在2013年中h1的最大值,在2014年中h1的最大值,2015年中h1的最大值
#9
是啊,那你显示完最大值,前面带上是哪一年就好了啊,也就是
DATEPART('yyyy',dtime)
这个东西,只要年份
不要把年月日时分秒都弄出来
DATEPART('yyyy',dtime)
这个东西,只要年份
不要把年月日时分秒都弄出来
#10
既然你是按年group by分组查询的
月日时分秒的信息早被合并没有了,上哪里取去
月日时分秒的信息早被合并没有了,上哪里取去
#11
报错呀"试图执行的查询中不包含作为合计函数一部分的特定表达式 'DATEPART('yyyy',dtime)' 。"我之前就是这么写的,一直报这个错误,加上MAX不出错了,只显示2015年了
要崩溃了
#12
我就是这个意思,只要年份,
SQLstr = "select DATEPART('yyyy',dtime)), MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值 from realData rl1 where DATEPART('yyyy',dtime) in (select DATEPART('yyyy',dtime) as 年 from realData rl2 where DATEPART('yyyy',dtime) between 2013 and 2015 group by DATEPART('yyyy',dtime))"
这么写就报错,怎么才能把年份显示出来呢,
#13
只要使用了max集函数,再写其它字段就出错,写的测试语句
SQLstr = "select dtime, MAX(h1)as 最大值 from realData";
也会报同样的错误:试图执行的查询中不包含作为合计函数一部分的特定表达式 'dtime'
大家有没有其它的方法,能解决我要的需求呢
SQLstr = "select dtime, MAX(h1)as 最大值 from realData";
也会报同样的错误:试图执行的查询中不包含作为合计函数一部分的特定表达式 'dtime'
大家有没有其它的方法,能解决我要的需求呢
#14
select DATEPART(yyyy,dtime) as dtime, MAX(h1) as 最大值, MIN(h1) as 最小值, AVG(h1) as 平均值
from realData group by DATEPART(yyyy,dtime)
having DATEPART(yyyy,dtime)>= '2013' and DATEPART(yyyy,dtime) <= '2015'
#15
你这个SQL语句还带select嵌套查询的
你先分解开,一个一个测试,看到底是外层报错,还是子查询报错,再想办法怎么改
你先分解开,一个一个测试,看到底是外层报错,还是子查询报错,再想办法怎么改
#16
谢谢,比我写的好多了,简单明了,还是对sql不熟悉呀,继续努力