各位新年好!请帮忙看看:
有视图V,含如下记录(为清晰起见,故分为5组):Aid Aname AE AR
1 AN1 ae1 ar10
1 AN1 ae1 ar12
1 AN1 ae1 ar13
1 AN1 ae1 ar142 AN2 ae2 ar20
2 AN2 ae2 ar21
2 AN2 ae2 ar22
2 AN2 ae2 NULL2 AN2 ae3 NULL
2 AN2 ae3 NULL
2 AN2 ae3 ar23
2 AN2 ae3 ar242 AN2 ae4 ar25
2 AN2 ae4 ar26
2 AN2 ae4 NULL
2 AN2 ae4 ar272 AN2 ae5 NULL
2 AN2 ae5 NULL
2 AN2 ae5 NULL
2 AN2 ae5 NULL想要查询结果(需要写的SQL:只返回不同Aid的第一行数据即可,具体要求请见下面说明):Aid Aname AE AR
1 AN1 ae1 ar10
2 AN2 ae2 ar20说明:视图V是已经创建的中间数据,AE和AR字段(在实际中均对应多列,现把它们各抽象为一组列),一个AE对应4个AR, 同一个Aid最多有4个AE (最少1个),则AR最多有(4x4)16个(最少4个) ,实际业务中动态查询的情况:
1. 当AE的个数等于1时,则对应的(4个) 任意一个AR值都有可能为空.(为空的用0代替);
2. 当AE的个数大于1时,则对应的每组中的任意一个AR值都有可能为空.(为空的用0代替)
备注: 1.每组AE之间应该用AND连接吧(因为对应的实际业务数据都为同一个Aid的属性)
2. AE与本组的AR之间也应该用AND连接吧( 原因同上)
3. AE和AR是在程序中要输入查询的参数(即可输入4个AE值,16个AR值进行查询).
有视图V,含如下记录(为清晰起见,故分为5组):Aid Aname AE AR
1 AN1 ae1 ar10
1 AN1 ae1 ar12
1 AN1 ae1 ar13
1 AN1 ae1 ar142 AN2 ae2 ar20
2 AN2 ae2 ar21
2 AN2 ae2 ar22
2 AN2 ae2 NULL2 AN2 ae3 NULL
2 AN2 ae3 NULL
2 AN2 ae3 ar23
2 AN2 ae3 ar242 AN2 ae4 ar25
2 AN2 ae4 ar26
2 AN2 ae4 NULL
2 AN2 ae4 ar272 AN2 ae5 NULL
2 AN2 ae5 NULL
2 AN2 ae5 NULL
2 AN2 ae5 NULL想要查询结果(需要写的SQL:只返回不同Aid的第一行数据即可,具体要求请见下面说明):Aid Aname AE AR
1 AN1 ae1 ar10
2 AN2 ae2 ar20说明:视图V是已经创建的中间数据,AE和AR字段(在实际中均对应多列,现把它们各抽象为一组列),一个AE对应4个AR, 同一个Aid最多有4个AE (最少1个),则AR最多有(4x4)16个(最少4个) ,实际业务中动态查询的情况:
1. 当AE的个数等于1时,则对应的(4个) 任意一个AR值都有可能为空.(为空的用0代替);
2. 当AE的个数大于1时,则对应的每组中的任意一个AR值都有可能为空.(为空的用0代替)
备注: 1.每组AE之间应该用AND连接吧(因为对应的实际业务数据都为同一个Aid的属性)
2. AE与本组的AR之间也应该用AND连接吧( 原因同上)
3. AE和AR是在程序中要输入查询的参数(即可输入4个AE值,16个AR值进行查询).
解决方案 »
- left inner right 3种连接有优先级么
- 这么多的表,如何把记录组合起来
- 怎么求每个月的最后一个周五?
- 请求简单的存储 (只是一个参数)
- 弱弱的问:判断一个数据库存在,然后将它删除的SQL语句是什么????
- 上月时间处理的问题
- 我想用SQL语句把SQLSERVER的表里数据导入ACCESS数据库,谁能告诉我,!先谢谢了!!
- 为何在不同客户端上不能以同一用户SA登录MSSQL?
- 在SQL Server中怎么进行级联删除?即删除一个表的一个记录后,自动删除用外键与它相关联的表的相应记录.
- 这样的函数怎么写?
- 我又来了。。sql语句的问题。。不知道怎么写好。。大虾们
- VB+SQL 从Excel里面导入数据进入已有的表中 实现不了
select *
from(
select *,rid=row_number() over (partition by aid order by getdate())
from v
)t
where rid = 1
select * from [tb] t where not exists(select 1 from [tb] where [Aid]=t.[Aid]and [AR]<t.[AR])
and[AR] is not null
----------------结果----------------------------
/*
Aid Aname AE AR
----------- ----- ---- ----
1 AN1 ae1 ar10
2 AN2 ae2 ar20(2 行受影响)*/
回4楼:可以Aid为排序,且在实际中每组AE中的每个AR值都允许相同,不同AE组的AR值也允许相同(虽然极少出现这种情况),这点很重要哦!(不是以AR或AE为排序的)
1 AN1 ae1 ar10而不是1 AN1 ae1 ar14或者其它
RE:嗯,可以是符合条件的任意一条(因为在实际中AR和AE各代表的是几个字段,它们之间貌似是无法去比较的)
select t.* from tb t where ar is not null and not exists (select 1 from tb where ar is not null and aid = t.aid and aname = t.aname and (ae < t.ae or (ae = t.ae and ar < t.ar)))
DaWuGui大大新年好哦!不知晴天大大在线否?(如果这个需求确实描述得不易理解的话,我貌似只有改下了,555...)