某公司招聘时出的题 使用一条SQL语句得到结果(50分)

  • 主题发起人 主题发起人 bobby_ym
  • 开始时间 开始时间
B

bobby_ym

Unregistered / Unconfirmed
GUEST, unregistred user!
-------------------题目Begin----------------------
有表T,该表只有一列i,该列i信息(数据)如下:
1
NULL
2
3
8
用SQL语句求如下的结果集(一列):
0
1
2
3
4
要求:使用一条语句得到结果(不得使用子查询)
 
新年同乐
 
我不是灌水
要的是排序效果??
 
不是排序结果

这是一个公司招聘时出的题, 我是不会, 事后求助高手,看看自己有多大差距
 
这得看是什么数据库了,如果是Oracle的话,你可以这样得出结果
select rownum-1 from T
 
1 对应 0
NULL 对应 1
2 对应 2
3 对应 3
8 对应 4?

如果这样,只能用case
 
SELECT IDENTITY(int,0,1) AS ID_Num from T
 
自由灵活,所见即所得的表格组件,开发环境下设计表格内容,独有的单据和Excel两种界面风格,可设计出各种类型的界面,配合强劲的打印功能,轻松解决自由

界面和报表难题。其显著特性包括:
# 提供了单据, Excel ,Grid 三种界面风格。
# 开发环境下设计表格,所见即所得。
# 支持数据库和分组。
# 既可以作为普通表格使用,又可以作为数据感知组件使用,或者两者同时使用。
# 独特的双数据源连接,轻松实现单记录布局和主从表连接。
# 除了通过数据集本身的方法来访问数据库的记录之外,还可以通过读取单元格的Text属性来实现,这样就不必在数据集间来回移动记录。
# 支持unicode文本。
# 提供了列排序,移动行列,隐藏行列,增删行列等功能。
# 提供了 Excel 样式的过滤功能。
# 方便的查找对话框。
# 提供了单元格合并,单元格命名,只读单元格,锁定单元格等功能。
# 提供了列对象,用于控制整列单元格。
# 支持虚表,公式(包括自定义公式), RTF 格式文本,Ole 对象和图表。
# 提供了按钮、下拉框、复选框、单选钮、日期、超链接、数值类等多种输入方式。
# 支持整形、正整形、负整形、浮点数、正浮点数、负浮点数等输入方式。可自动处理千分位,可设置小数位数。
# 九种文本和图形对齐方式,还可通过单元格边距控制输出位置。
# 导入/导出 Excel 文件,相互粘贴数据。
# 提供了自动调整行高,垂直文本输出功能。
# 提供字体旋转功能。
# 可以设置单元格掩码,附有掩码编辑器。
# 设置单元格的 PasswordChar。
# 单元格内容字符数限制。
# 单元格支持图形,并且可以拉伸,层叠图形。
# 可以显示/隐藏单元格的边框、可以设置边框的类型、大小、颜色。
# 支持单元格斜线。
# 3D 外观的单元格。
# 设置单元格的光标和提示。
# 支持自绘画单元格。
# 设置固定行和列。
# 保存到文件和流。
# 提供了复制/粘贴区域功能。
# VCL 版本可以插入其它可视 VCL 组件。

http://www.anylib.com
 
没看明白什么意思
 
select (case isnull(i,0) when 8 then 4 end)AS ID_Num from T order by i
 
我看。可能是4樓說的對吧。是行號
 
那个4是什么意思啊???不明白
 
顶 coolfilm 应该是这个
 
这也叫题目。哪种数据类型可以支持这样。
 
题目没有完全说清楚,LZ是SB
你说的表内容是全部吗?还是还有很多内容?????比如i包含的数据有0,1,2,3,4,5,null,等,只是没有顺序,按顺序排?
还是就上面所说???
如果是前者就select * from table1 where not i is null order by i 就行了
后者的话用很多方法,比如case when then 或者LS 几位回答的,建议看看书
 
select ISNULL(i,0) as i from T order by i
 
select Case when IsNull(i,0)=8 then 4 else IsNull(i,0) end i from T order by i

这个可以得到你要的结果...
 
难道没有人能解答吗?这个问题是招聘时出的,问题全部提示就是上面说的
 
太简单了,只是测试一下这个人的反映能力而已.
select rownum-1 from t
 
使用自连接
Create Table T(i Int)

insert Into T values(1)
Insert Into T values(Null)
insert into T values(2)
insert into T values(3)
insert into T Values(8)

Create Table T(i varchar(20))

insert Into T values(1)
Insert Into T values(Null)
insert into T values(2)
insert into T values(3)
insert into T Values(8)

Select Count(*) - 1 as ID
From T A Left Join T B on isNull(A.i, 0) >= isNull(B.i, 0)
Group by A.i
 
后退
顶部