一个很难的问题关于sql读数据的问题

yuanxiaolei 2011-12-28 06:38:10
一个很难的问题关于sql读数据的问题
有如下表的字段

id zdm yhid xmid 字段名

1 yhid 1 2 数据



我如何先把zdm中的数据读出来得到yhid 再把这个记录的yhid的1数据读出来?

用sql


...全文
125 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
谢谢了,果然是高手。
-晴天 2011-12-28
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 yuanxiaolei 的回复:]

还有一个问题。字段名是xs ,数值是2 sj 数值是2011-12-28 19:14

2是表示2小时。

我想得到的结果是,当前的时间和sj时间差为2小时的数据。

如何写?
[/Quote]

这个好办:
select * from tb where sj between (select sj from tb where id=xx) and (select dateadd(hh,xs,sj) from tb where id=xx)
yy1987316 2011-12-28
  • 打赏
  • 举报
回复
动态sql能实现
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
就是说查超过两小时的数据。这个两小时的值是从xs中得到的。
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
还有一个问题。字段名是xs ,数值是2 sj 数值是2011-12-28 19:14

2是表示2小时。

我想得到的结果是,当前的时间和sj时间差为2小时的数据。

如何写?
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
好的,谢谢你了。
-晴天 2011-12-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yuanxiaolei 的回复:]

没有可能用一个语句?
[/Quote]

不行.
因为你的对象是可变的.
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
那我的问题不能用一个语句来解决了?
-晴天 2011-12-28
  • 打赏
  • 举报
回复
这一段
declare @ss nvarchar(1000)
select @ss=dxlbjfjk from dxlb where dxlbid=dxlb.dxlbid
set @ss='select '+@ss+' from dxlb'
exec(@ss)
不能作为子查询放到语句中去的.
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
没有可能用一个语句?
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
我是用C#写的程序。就想搞成一个语句的。
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
declare @ss nvarchar(1000) select * from kfgl,dlqfb,dxlb,zhgl where kfgl.kfglfhqk='自动返还' and dlqfb.dxlbid=dxlb.dxlbid and dlqfb.dlqfbyhid=kfgl.kfglid and dlqfb.dlqfbfhzt='未返还' and zhgl.zhglid= (select @ss=dxlbjfjk from dxlb where dxlbid=dxlb.dxlbid set @ss='select '+@ss+' from dxlb' exec(@ss))
-晴天 2011-12-28
  • 打赏
  • 举报
回复
后面括号里的那些要单独运行的.
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复


yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
select * from kfgl,dlqfb,dxlb,zhgl where kfgl.kfglfhqk='自动返还' and dlqfb.dxlbid=dxlb.dxlbid and dlqfb.dlqfbyhid=kfgl.kfglid and dlqfb.dlqfbfhzt='未返还' and zhgl.zhglid= (select @ss=dxlbjfjk from dxlb where dxlbid=dxlb.dxlbid set @ss='select '+@ss+' from dxlb' exec(@ss))


为什么提示我有这个错误

  • 打赏
  • 举报
回复
这个动态语句就行了啊,建议拿到问题分析一下,一步步来,不要急
dovei 2011-12-28
  • 打赏
  • 举报
回复
贴出所需结果
yuanxiaolei 2011-12-28
  • 打赏
  • 举报
回复
谢谢,我来试下
-晴天 2011-12-28
  • 打赏
  • 举报
回复
create table tb(id int,zdm varchar(10),yhid int,xmid int,字段名 varchar(10))
insert into tb select 1,'yhid',1,2,'数据'
go
declare @s nvarchar(1000)
select @s=zdm from tb where id=1
set @s='select '+@s+' from tb'
exec(@s)
/*
yhid
-----------
1

(1 行受影响)

*/
go
drop table tb
-晴天 2011-12-28
  • 打赏
  • 举报
回复
用动态语句.

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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