SQL数据库中找出相应符合条件的记录

sql中有一表qwe,类似如下
id 月份 物品 月初 月末
1 01 A 1 2
2 02 A 2 5
3 03 A 5 3
4 04 A 2 6
5 01 B 1 2
6 02 B 2 4
7 03 B 5 2
8 04 B 2 6

物品A和B,2月的月初应等于各自1月的月末,3月的月初应等于各自2月的月末,4月的月初应等于各自3月的月末,如此类推

如何在企业管理器或查询分析器中用sql语句找出某月的月初不等于上一个月的月末的记录,即要得出如下结果:
id 月份 物品 月初 月末
3 03 A 5 3
4 04 A 2 6
6 02 B 2 4
7 03 B 5 2

第1个回答  2008-04-20
declare @tmp_month int,
@tmp_yuemo int,
@tmp_yuemo_pre int,
@tmp_yuechu int,
@tmp_count int

create table #tmp_qwe
(
month_no int
)

select @tmp_month=1
select @tmp_yuemo=0
select @tmp_yuemo_pre=0
select @tmp_count=count(*) from qwe

while tmp_month<@tmp_count
begin
select @tmp_yuechu=月初(字段) from qwe where 月份(转为数字型)=@tmp_month and 物品='A'
if @tmp_month>1 then
begin
select @tmp_yuemo=月末(字段) from qwe where 月份(转为数字型)=@tmp_month and 物品='A'
if @tmp_yuechu <> @tmp_yuemo_pre then
begin
insert into #tmp_qwe values(@tmp_month)
end
end
select @tmp_month=@tmp_month+1
select @tmp_yuemo_pre=@tmp_yuemo
end
select * from #tmp_qwe
drop table #tmp_qwe
相应的物品做一下改变
第2个回答  2008-04-20
假设月份是字符型,则用这样一条语句完成:
select * from qwe a left join qwe b on convert(int,a.月份)+1=convert(int,b.月份) and a.物品=b.物品 where a.月末!=b.月初

如果月份是整型的,则这样写
select * from qwe a left join qwe b on a.月份+1=b.月份 and a.物品=b.物品 where a.月末!=b.月初本回答被提问者采纳

如何用select语句在SQL数据库中查询符合指定条件的记录?
描述:sql server 数据库中使用条件查询就可以实现符合查询条件的数据记录显示出来。查询语法为:select * from 表名 where 字段名=条件(语法说明:select后面的*号代表的是所有字段显示出来。条件出的条件如果为字符型条件需要使用单引号引起来,如果是int类型不用引号),以下以某数据中的一张数据表user...

如何用sql求满足指定条件的记录数的平均值
使用 SQL 式查询,对列表或数据库中满足指定条件的记录字段(列)中的数值求平均值。示例 DAVERAGE(A2:F20,G2,A22:D23)语法 DAVERAGE(database,field,criteria)database 构成列表或数据库的单元格区域,列表的第一行包含每一列的标签。field 指定 database 中的哪一列包含要提取和用于计算的值。 fi...

SQL 查询多条符合条件的记录
总之你的多个“条件”如果能用select出来的话,把结果放到in里就可以了。

SQL数据库中找出相应符合条件的记录
drop table #tmp_qwe 相应的物品做一下改变

在sql数据库中如何筛选以日期为条件的记录?
sql数据库中如筛选以日期为条件的记录,可以用有二种方法具体实现,如下:\\x0d\\x0a第一种:直接用语句\\x0d\\x0a\\x0d\\x0adate1与date2是字符串\\x0d\\x0aSQL.Tet:='select*fromtablewhere字段between'+Quotedstr(date1)+'and'+Quotedstr(date2);\\x0d\\x0a\\x0d\\x0adate1与date2是...

sql新手:怎样读取数据库中符合条件的的一行数据?
1.判断用户名是否存在 declare @i int set @i = 0;select @i = count(*) from user where username = 'admin' ;if(@i>=1)begin select usename from user where username = 'admin' ;end

sql语句:在一个表中查询符合条件的数据
* from sx_58table1 a where not exists(select * from sx_58table1 where (LXR=a.LXR and LXDH=a.LXDH and FBSJ>a.FBSJ ) or (JBQK=a.JBQK and LXDH=a.LXDH and FBSJ>a.FBSJ ) or(JBQK=a.JBQK and LXR=a.LXR and FBSJ>a.FBSJ ))查询时间最晚那一条,然后进行对比 ...

sql语句中条件短语的关键字是
WHERE。WHERE子句是SQL查询语句中用来指定查询结果的条件的部分,用于从数据库表中筛选出符合条件的记录。例如SELECT*FROMCustomersWHERECountry=USA在这个示例中,WHERE子句指定了要返回哪些记录,即只返回Country列的值等于'USA'的记录。

如何能够使用sql语句取出符合条件的所有数据来?
"For i=0 to UBOUND(Arror)str=str+"a link '%"+Arror(i)+"%' OR "Next '去掉最后一个OR str=Left(str,Len(str)-3)'生成SQL,设表名为Table Dim SQLStr="select * From Table where " +str 以上代码未经调试,另如果库中出现10以上的数字也会有些问题,因为查1时,10也符合条件 ...

如何在SQL中查找日期范围内的数据记录?
1. 使用BETWEEN操作符:在SQL中,要查询某个日期范围内的数据,最常用的方法是使用`BETWEEN`操作符。这个操作符允许你指定一个范围,并获取在这个范围内的所有记录。2. 语法结构:基本的语法结构如下:sql SELECT * FROM 表名 WHERE 日期字段 BETWEEN 开始日期 AND 结束日期;这里的"表名"是你需要查询...

相似回答
大家正在搜