sql语句,急(先谢谢啦)

scounix2003 2007-12-11 11:15:59
现有A表数据,字段为:
no,upno,lev
11 22 1
22 33 2
33 44 3

现在我想取数据11 33 1的数据如何写sql语句啊?
11 44 1 呢?
谢谢啦
...全文
115 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
daviszr_1979 2007-12-12
  • 打赏
  • 举报
回复
CREATE TABLE Test (
[No] nchar(10) ,
[UpNo] nchar(10),
[Level] int )
GO

Insert Test ([No],[UpNo],[Level])
Select '11', '22', 1
Union Select 'aa', '22', 1
Union Select '22', '33', 2
Union Select 'bb', '33', 2
Union Select '33', '44', 3

Update Test Set Test.UpNo = (Select Test.UpNo
From (Select Distinct UpNo From Test Where Level=1) a,
Test Where a.UpNo = Test.No)
Where Exists( Select a.UpNo
From (Select Distinct UpNo From Test Where Level=1) a,
Test Where a.UpNo = Test.No)
And Test.Level = 1

--drop table Test
中国风 2007-12-12
  • 打赏
  • 举报
回复
declare  @T  TABLE      ( [No]   nchar(10)   , [UpNo]   nchar(10), [Level]   int   ) 

Insert @T ([No],[UpNo],[Level])
Select '11', '22', 1
Union Select '22', '33', 2
Union Select '33', '44', 3


select
t.No,t2.UPNO,t.Level
from
@T t join @T t2 on t.[Level]=t2.[Level]-1
where
T.No='11'


select
t.No,
t2.UPNO,
t.Level
from
@T t ,@T t2
where
T.No='11' and not exists(select 1 from @T where [Level]>t2.[Level])
/*

(所影响的行数为 3 行)

No UPNO Level
---------- ---------- -----------
11 33 1

(所影响的行数为 1 行)

No UPNO Level
---------- ---------- -----------
11 44 1

(所影响的行数为 1 行)


*/

中国风 2007-12-12
  • 打赏
  • 举报
回复

--按结果写
declare @T TABLE ( [No] nchar(10) , [UpNo] nchar(10), [Level] int )

Insert @T ([No],[UpNo],[Level])
Select '11', '22', 1
Union Select '22', '33', 2
Union Select '33', '44', 3


select
distinct t.No,t2.UPNO,t.Level
from
@T t join @T t2 on t.NO<>t2.No
where
T.No='11'


(所影响的行数为 3 行)

No UPNO Level
---------- ---------- -----------
11 33 1
11 44 1

(所影响的行数为 2 行)


areswang 2007-12-11
  • 打赏
  • 举报
回复
LZ需要说明需求。
winstonbonaparte 2007-12-11
  • 打赏
  • 举报
回复
你是为什么要取这样的值?算法总要写出来吧.不然万一是其他值你怎么办?
pt1314917 2007-12-11
  • 打赏
  • 举报
回复

楼主自己想出来的算法吧?
既然这样,那结果就是:
select 11,33,1
呵呵```
铁人周 2007-12-11
  • 打赏
  • 举报
回复
select no,upno,lev
from
(
select no,0 as upno,lev from A where no=11
union
select 0 as no,upno,0 as lev from A where upno=33
) as tb

出来的结果就是11 33 1

把33换成44就是11 44 1
青锋-SS 2007-12-11
  • 打赏
  • 举报
回复
不明白
dawugui 2007-12-11
  • 打赏
  • 举报
回复
这是啥算法?
scounix2003 2007-12-11
  • 打赏
  • 举报
回复
不好意思,下午临时有事,需求是这样的
我有表A,字段no部门,upno上级部门,level级别
表内容:11 22 1(11部门的上级部门是22,11部门的级别是1级)
aa 22 1
22 33 2
bb 33 2
33 44 3
现在我想将表A的数据重新整合一下,将3级部门不变,2级也不动,1级的关连到上级部门的上级,表B 与A机构一样。
也就是结果如下:
11 33 1
aa 33 1
22 33 2
bb 33 2
33 44 3
不知道大家明白没有?
andysun88 2007-12-11
  • 打赏
  • 举报
回复
郁悶!需求不明確。
wuxinyuzhu 2007-12-11
  • 打赏
  • 举报
回复
发贴还有分吗?
woshiccye_msdn 2007-12-11
  • 打赏
  • 举报
回复
是不是LZ在骗分呀呵呵
twqmaomao1 2007-12-11
  • 打赏
  • 举报
回复
估计LZ就是没规律
才发出来的
hui_hui_2007 2007-12-11
  • 打赏
  • 举报
回复
楼主说说规律呀

34,873

社区成员

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

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