随机取值问题.
2006-05-19 16:01
148 查看
--表
DECLARE @T TABLE(ID INT IDENTITY(1,1), GROUP_I INT, VALUE INT, C INT,D INT)
INSERT INTO @T SELECT 1,1.1,NULL,NULL
UNION ALL SELECT 1,1.2,NULL,NULL
UNION ALL SELECT 1,1.3,NULL,NULL
UNION ALL SELECT 1,1.4,NULL,NULL
UNION ALL SELECT 2,1.5,NULL,NULL
UNION ALL SELECT 2,1.6,NULL,NULL
UNION ALL SELECT 2,1.7,NULL,NULL
UNION ALL SELECT 2,1.8,NULL,NULL
UNION ALL SELECT 2,1.9,NULL,NULL
--要求:
1:根据GROUP_I 分组,然后根据C 的最大值,提取该记录.
2:如果分组后C 的最大值有相同的记录,则随机提取一条.
--求相关SQL
Select * from @t as a
where not exists(
Select 1 from @t where GROUP_I=a.GROUP_I and IsNULL(C,0)>IsNULL(a.C,0)
) and ID=(
Select top 1 ID from @t where GROUP_I=a.GROUP_I
and IsNULL(C,0)=IsNULL(a.C,0) order by NewID()
)
DECLARE @T TABLE(ID INT IDENTITY(1,1), GROUP_I INT, VALUE INT, C INT,D INT)
INSERT INTO @T SELECT 1,1.1,NULL,NULL
UNION ALL SELECT 1,1.2,NULL,NULL
UNION ALL SELECT 1,1.3,NULL,NULL
UNION ALL SELECT 1,1.4,NULL,NULL
UNION ALL SELECT 2,1.5,NULL,NULL
UNION ALL SELECT 2,1.6,NULL,NULL
UNION ALL SELECT 2,1.7,NULL,NULL
UNION ALL SELECT 2,1.8,NULL,NULL
UNION ALL SELECT 2,1.9,NULL,NULL
--要求:
1:根据GROUP_I 分组,然后根据C 的最大值,提取该记录.
2:如果分组后C 的最大值有相同的记录,则随机提取一条.
--求相关SQL
Select * from @t as a
where not exists(
Select 1 from @t where GROUP_I=a.GROUP_I and IsNULL(C,0)>IsNULL(a.C,0)
) and ID=(
Select top 1 ID from @t where GROUP_I=a.GROUP_I
and IsNULL(C,0)=IsNULL(a.C,0) order by NewID()
)
相关文章推荐
- JavaScript中${pageContext.request.contextPath}取值问题及解决方案
- 微软、谷歌、腾讯等笔试题之随机概率问题
- 辽宁电网容载比问题及合理取值研究
- 上传文件细节处理问题(包括中文乱码、限制文件大小、显示上传速度、删除临时文件,随机生成文件夹等)
- 使用for循环对 golang 中结构体数组取值进行修改时,需要注意的问题
- 关于浮点数的精度与取值范围的问题
- java的循环取值判断下一层的逻辑问题
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 随机过程课中的一个复积分问题
- IDHTTP.CONNECT 随机问题
- WEB-Linux上随机图片不能生成问题
- I2C上拉电阻取值问题
- input 输入框 disabled 属性导致 无法取值的问题
- 解决JSP 开发中,EL标签同名键值取值冲突的问题
- 关于LookUpEdit取值问题
- 关于POI中excel取值问题
- 关于DynamipsGUI idle-pc值的取值问题
- iOS项目开发中,对后台返回数据为<null>时候的处理,避免取值产生程序崩溃问题
- List 里面有个Map取值问题