sql求助

crazy915 2008-08-22 04:23:43
数据显示为:

a b c d
01 1 10 null
02 1 20 10
03 2 30 null
04 1 40 20


a是主键,求d的值是根据b为相同值的前一笔c值



...全文
106 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
水族杰纶 2008-08-22
  • 打赏
  • 举报
回复
0
crazy915 2008-08-22
  • 打赏
  • 举报
回复
max和top 1 order by desc 的比较。

那个效率高啊?
linzi_0535 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fa_ge 的回复:]
SQL code

SELECT * FROM employee WHERE gh='10403'

CREATE TABLE #(a varchar(5), b int, c int)
insert into #
select '01', 1, 10 union all
select '02', 1, 20 union all
select '03', 2, 30 union all
select '04', 1, 40


SELECT a,b,c,
d=(SELECT top 1 c FROM # WHERE A.b=b AND a<A.a ORDER BY a DESC)
FROM # A

/*
a b c d
----- ------…
[/Quote]

顶这个
zoujp_xyz 2008-08-22
  • 打赏
  • 举报
回复
SELECT a,b,c,
d=(SELECT MAX(c) FROM # WHERE A.b=b AND a<A.a)
FROM # A
crazy915 2008-08-22
  • 打赏
  • 举报
回复
呵呵

这里的响应速度真快!!!!!!!!!!!!!!

zoujp_xyz 2008-08-22
  • 打赏
  • 举报
回复
SELECT * FROM employee WHERE gh='10403'

CREATE TABLE #(a varchar(5), b int, c int)
insert into #
select '01', 1, 10 union all
select '02', 1, 20 union all
select '03', 2, 30 union all
select '04', 1, 40


SELECT a,b,c,
d=(SELECT top 1 c FROM # WHERE A.b=b AND a<A.a ORDER BY a DESC)
FROM # A
-狙击手- 2008-08-22
  • 打赏
  • 举报
回复
晕,晕, 晕

三晕
crazy915 2008-08-22
  • 打赏
  • 举报
回复
ok

“鶴嘯”的强,我咋就没相对这样写了。。

以后还得多到这里混混。。。。

水族杰纶 2008-08-22
  • 打赏
  • 举报
回复
declare @t table(a varchar(10),b varchar(10),c varchar(10),d varchar(10))
insert @t select '01', '1', '10', null
insert @t select '02', '1', '20', 10
insert @t select '03', '2', '30', null
insert @t select '04', '1', '40', 20
SELECT a,b,c,
d=(SELECT top 1 c FROM @t WHERE t.b=b AND a<t.a ORDER BY a DESC)
FROM @t t
crazy915 2008-08-22
  • 打赏
  • 举报
回复
数据结构是这样的:
a b c
01 1 10
02 1 20
03 2 30
04 1 40

我要显示为:

a b c d
01 1 10 null
02 1 20 10
03 2 30 null
04 1 40 20
fa_ge 2008-08-22
  • 打赏
  • 举报
回复


SELECT * FROM employee WHERE gh='10403'

CREATE TABLE #(a varchar(5), b int, c int)
insert into #
select '01', 1, 10 union all
select '02', 1, 20 union all
select '03', 2, 30 union all
select '04', 1, 40


SELECT a,b,c,
d=(SELECT top 1 c FROM # WHERE A.b=b AND a<A.a ORDER BY a DESC)
FROM # A

/*
a b c d
----- ----------- ----------- -----------
01 1 10 NULL
02 1 20 10
03 2 30 NULL
04 1 40 20

(所影响的行数为 4 行)
*/
fa_ge 2008-08-22
  • 打赏
  • 举报
回复

SELECT a,b,c,
d=(SELECT top 1 c FROM # WHERE A.b=b AND a<A.a ORDER BY a DESC)
FROM # A


regithanhu 2008-08-22
  • 打赏
  • 举报
回复
完全不知道你在说什么!昏了!楼猪可以描述清楚点不?
-狙击手- 2008-08-22
  • 打赏
  • 举报
回复
a b c d
01 1 10 null
02 1 20 10
03 2 30 null
04 1 40 20

--

update a
set d = (select top 1 c from ta where b = a.b and a < a.a order by a desc)
from ta a
水族杰纶 2008-08-22
  • 打赏
  • 举报
回复
declare @t table(a varchar(10),b varchar(10),c varchar(10),d varchar(10))
insert @t select '01', '1', '10', null
insert @t select '02', '1', '20', 10
insert @t select '03', '2', '30', null
insert @t select '04', '1', '40', 20
select * from @t where a in(select min(a) from @t group by b)

a b c d
---------- ---------- ---------- ----------
01 1 10 NULL
03 2 30 NULL
是这意思吗?
前一个值,是最小的那个?
chuifengde 2008-08-22
  • 打赏
  • 举报
回复
不懂

34,588

社区成员

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

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