无法识别AS

billlyh 2010-01-22 10:13:00
表数据结构 Key1、Character01 为varchar,Number01 为numeric
Key1 Character01 Number01
1 3 1.000000000
2 te11s222t 1.000000000
3 3te11s222t 1.000000000
4 4te11s222t 1.000000000
5 1.000000000
6 2 1.000000000
7 4 1.000000000
8 1.000000000
9 1.000000000
20 20.000000000
21 21.000000000
22 22.000000000
23 19 23.000000000
24 30 24.000000000
25 38 25.000000000
26 2 26.000000000
27 2 27.000000000
28 4 27.000000000

我在vs2005建了数据连接,新建一个查询,用了两条语句
1.
SELECT top 1 Key1
FROM PUB.UD40
ORDER BY Key1 DESC
结果是
Key1
9
仔细分析了一下,因为Key1是字符型,所以9是最大,不是我要的结果


2.
SELECT top 1 Key1
FROM PUB.UD40
ORDER BY Number01 DESC
结果是
Key1
27

而我是想得到
28 4 27.000000000

今天刚发过贴,叫
select top找出最新插入的一条语句
按照一些朋友给出的语句做了都不行,
顺便说一下,这个数据库叫OpenEdge 10.1C,不是ms sql,但支持sql语法,
用了
1.
SELECT top 1 Key1 FROM PUB.UD40 ORDER BY cast(Key1 as int) DESC
2.
SELECT MAX(Cast(Key1 as INT)) AS MAX_Key1 FROM PUB.UD40
都是报这个错
函数参数列表中出错: 无法识别“AS”。
无法分析查询文本。

...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
billlyh 2010-01-22
  • 打赏
  • 举报
回复
1. SELECT top 1 Key1 FROM PUB.UD40 ORDER BY Convert(int,Key1) DESC
2. SELECT MAX(Convert(int,Key1))FROM PUB.UD40
这两条是t-sql 92的语法,这个数据好象只支持
t-sql 89
starseeker7 2010-01-22
  • 打赏
  • 举报
回复
t-sql其中標準也很多拉,,
像SQL SERVER 7.0 ANSI T-SQL(89)
SQL SERVER 2000 ANSI T-SQL(92)

而且也只是大部分滿足

,,樓主只有多實驗了,,,對於少用的數據庫,上面不是給了很多-0-改進辦法莫- -
Mr_Nice 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 billlyh 的回复:]
表数据结构 Key1、Character01 为varchar,Number01 为numeric 
Key1  Character01      Number01
1 3 1.000000000
2 te11s222t 1.000000000
3 3te11s222t 1.000000000
4 4te11s222t 1.000000000
5 1.000000000
6 2 1.000000000
7 4 1.000000000
8 1.000000000
9 1.000000000
20 20.000000000
21 21.000000000
22 22.000000000
23 19 23.000000000
24 30 24.000000000
25 38 25.000000000
26 2 26.000000000
27 2 27.000000000
28 4 27.000000000

我在vs2005建了数据连接,新建一个查询,用了两条语句
1.
SELECT top 1 Key1
FROM PUB.UD40
ORDER BY Key1 DESC
结果是
Key1
9
仔细分析了一下,因为Key1是字符型,所以9是最大,不是我要的结果


2.
SELECT top 1 Key1
FROM PUB.UD40
ORDER BY Number01 DESC
结果是
Key1
27

而我是想得到
28 4 27.000000000

今天刚发过贴,叫
select top找出最新插入的一条语句
按照一些朋友给出的语句做了都不行,
顺便说一下,这个数据库叫OpenEdge 10.1C,不是ms sql,但支持sql语法,
用了
1.
SELECT top 1 Key1 FROM PUB.UD40 ORDER BY cast(Key1 as int) DESC
2.
SELECT MAX(Cast(Key1 as INT)) AS MAX_Key1 FROM PUB.UD40
都是报这个错
函数参数列表中出错: 无法识别“AS”。
无法分析查询文本。


[/Quote]


才看到这句:数据库叫OpenEdge 10.1C,不是ms sql
根据报错:函数参数列表中出错: 无法识别“AS”。

去掉as看看!!??

1. SELECT top 1 Key1 FROM PUB.UD40 ORDER BY Convert(int,Key1) DESC 
2. SELECT MAX(Convert(int,Key1))FROM PUB.UD40

--小F-- 2010-01-22
  • 打赏
  • 举报
回复
SELECT top 1 Key1 FROM PUB.UD40 ORDER BY convert(int,key) DESC
黄_瓜 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 billlyh 的回复:]
表数据结构 Key1、Character01 为varchar,Number01 为numeric 
Key1  Character01      Number01
1 3 1.000000000
2 te11s222t 1.000000000
3 3te11s222t 1.000000000
4 4te11s222t 1.000000000
5 1.000000000
6 2 1.000000000
7 4 1.000000000
8 1.000000000
9 1.000000000
20 20.000000000
21 21.000000000
22 22.000000000
23 19 23.000000000
24 30 24.000000000
25 38 25.000000000
26 2 26.000000000
27 2 27.000000000
28 4 27.000000000

我在vs2005建了数据连接,新建一个查询,用了两条语句
1.
SELECT top 1 Key1
FROM PUB.UD40
ORDER BY Key1 DESC
结果是
Key1
9
仔细分析了一下,因为Key1是字符型,所以9是最大,不是我要的结果


2.
SELECT top 1 Key1
FROM PUB.UD40
ORDER BY Number01 DESC
结果是
Key1
27

而我是想得到
28 4 27.000000000

今天刚发过贴,叫
select top找出最新插入的一条语句
按照一些朋友给出的语句做了都不行,
顺便说一下,这个数据库叫OpenEdge 10.1C,不是ms sql,但支持sql语法,
用了
1.
SELECT top 1 Key1 FROM PUB.UD40 ORDER BY cast(Key1 as int) DESC
2.
SELECT MAX(Cast(Key1 as INT)) AS MAX_Key1 FROM PUB.UD40
都是报这个错
函数参数列表中出错: 无法识别“AS”。
无法分析查询文本。


[/Quote]

不早说,sql语法也分好多种呢,
as都不识别
试试不要as
SELECT MAX(Cast(Key1 as INT))  MAX_Key1 FROM PUB.UD40
--小F-- 2010-01-22
  • 打赏
  • 举报
回复
用cast或者convert转化KEY1为数字 就可以按照你要求的排序了
SQL77 2010-01-22
  • 打赏
  • 举报
回复
OpenEdge 10.1C,不是ms sql,但支持sql语法,

晕,

SELECT MAX(Cast(Key1 as INT))  MAX_Key1 FROM PUB.UD40 


那你把AS去掉试试


sgtzzc 2010-01-22
  • 打赏
  • 举报
回复
把Key1转换成数字,然后排序,你看看这个数据库类型转换是如何做的,自己改一下就可以了

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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