Foxtable(狐表)用户栏目专家坐堂 → 求一个SQL语句


  共有3824人关注过本帖树形打印复制链接

主题:求一个SQL语句

帅哥哟,离线,有人找我吗?
jspta
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/8 13:50:00 [显示全部帖子]

大概是这样,

Select a.编码,a.列1,b.列2 from a left join (select distinct 编码,列1,列2 from a where 列2 not null or 列2 <> '') as b on a.编码 = b.编码 and a.列1 = b.列1


[此贴子已经被作者于2014-4-8 13:50:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/8 16:19:00 [显示全部帖子]

select 编码, 列1, (select top 1 列2 from {表A} as b where b.编码 = a.编码 and b.列1 = a.列1 and a.列2 is not null order by 列2 desc) as 列2 from {表A} as a
需要排序保证第一个不是空的。

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/8 17:06:00 [显示全部帖子]

以下是引用e-png在2014-4-8 16:41:00的发言:

7楼有点甜:ok了·······

8楼的:order by 多余了吧,不是有“列2 is not null” 吗

 

再次谢谢



有区别。null 和 '' 这个概念,MSSQL的数据库不认为是一种,Access的好像没区别。


你可以试试看吧。


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/13 14:13:00 [显示全部帖子]

你应该先规范下你的表1,把需要的关联编号在导入或录入的时候就生成,这样关联表2只要inner join 表2就行了
你用过度表查询也是可以,但总会增加效率问题,甚至错误。Access表的话数据越大这种问题越明显。

数据库讲究的就是 关联键 ,这个是绝对不能缺失的,所以建议你还是从源表解决这种问题吧。

select c.编码,c.列1, 表2.值 as 列2 from 表2
inner join 
(Select a.编码,a.列1,b.列2 from a left join (select distinct 编码,列1,列2 from a where 列2 not null or 列2 <> '') as b on a.编码 = b.编码 and a.列1 = b.列1)c
on 表2.关联列2 = c.列2

多写写肯定就会了, inner join 比你现在写的还要基础

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/13 20:25:00 [显示全部帖子]

以下是引用e-png在2014-4-13 20:03:00的发言:

谢谢jspta

 

我不是在设计,只是做练习:是在原来数据库中的表中做些查询,因为还有其他的列,列2 在初始保存时已不可能都生成(只有隔数行才有一个值的).

 

把以前的补起来,再解决今后出现的问题,就可以解决了嘛


 回到顶部