关于字段转换查询的问题

x星空 2018-05-17 02:31:42
有2个表,表1 code表,表2,data表,
code表 2个字段,分别是 姓名和字段 (比如张三对应F1,李四对应F2,王五对应F3)
data表有
字段1 信息,存放信息类型,比如成绩1,成绩2,成绩3,成绩4
字段2 F1,
字段3 F2.。。。

其实data表F1之后的字段是姓名字段,长度都超过10位且由于长度不一定,通过code表过渡下,
但是输入的查询信息是姓名,需要根据code表转换成data表的字段名称


这种情况下查询数据用数据库连接么。sql怎么写连接语句?请教下大家,

比如 现在有 张三,李四,王五,3个人,
查询3个人的成绩3,成绩5,成绩6,,应该怎么查呢?
...全文
1104 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
x星空 2018-05-18
  • 打赏
  • 举报
回复
难道我进错了么,我是从access里执行查询,有点不合适
RINK_1 2018-05-17
  • 打赏
  • 举报
回复


if OBJECT_ID(N'tempdb.dbo.#code') is not null
drop table #code
go

create table #code
(code nvarchar(10),
 field varchar(5))

insert into #code
select '张三','F2' union all
select '张四','F3' union all
select '张五','F4' union all
select '王三','F5' union all
select '王四','F6' union all
select '王五','F7'

if OBJECT_ID(N'tempdb.dbo.#data') is not null
drop table #data
go

create table #data
(F1 nvarchar(10),
 F2 decimal(12,4),
 F3 decimal(12,4), 
 F4 decimal(12,4), 
 F5 decimal(12,4),
 F6 decimal(12,4), 
 F7 decimal(12,4),
 F8 decimal(12,4),
 F9 decimal(12,4),
 F10 decimal(12,4))
 
insert into #data
select '一次',0.4486,0.4486,0.4486,0.4486,0.4486,0.4486,0.4486,0.4486,0.4486 union all
select '二次',0.6601,0.6601,0.6601,0.6601,0.6601,0.6601,0.6601,0.6601,0.6601 union all
select '三次',0.6621,0.6621,0.6621,0.6621,0.6621,0.6621,0.6621,0.6621,0.6621 union all
select '四次',0.6661,0.6661,0.6661,0.6661,0.6661,0.6661,0.6661,0.6661,0.6661

declare @sql nvarchar(max)

select @sql=ISNULL(@sql+',','')+field+' as '+code
from
(select * 
from #code
where code in ('张三','王三')) as A

set @sql='select F1 as F1,'+@sql+' from #data where F1=''三次'''

exec(@sql)

x星空 2018-05-17
  • 打赏
  • 举报
回复
https://bbs.csdn.net/topics/320030483 和这个一个意思,终于找到了,用left jion
x星空 2018-05-17
  • 打赏
  • 举报
回复
data表人家就是这样的我没法更改,其实我的提问不是数据设计的问题,是字段名太长,做了个字典。 我是想文怎么从字典表连接到数据表。 我是想筛选某个人的不同次数据
shinger126 2018-05-17
  • 打赏
  • 举报
回复
我不知道你们为什么这么设计数据。。。。。拖出来打死可好?
mywisdom88 2018-05-17
  • 打赏
  • 举报
回复
要改为这样,才能在SQL表上查询 DATA表 ------------------------- F次,F值,F名 一次 0.4486 F1 二次 0.6601 F1 三次 0.6621 F1 四次 0.6621 F1 一次 0.4486 F2 二次 0.6601 F2 三次 0.6621 F2 四次 0.6621 F2 一次 0.4486 F3 二次 0.6601 F3 三次 0.6621 F3 四次 0.6621 F3 ...
mywisdom88 2018-05-17
  • 打赏
  • 举报
回复
楼主的表结构严重问题,不适合在SQL上使用.
x星空 2018-05-17
  • 打赏
  • 举报
回复
为啥楼主不让编辑帖子, 我用的access做的数据,从excel中通过sql调用查询,谢谢各路大神
二月十六 2018-05-17
  • 打赏
  • 举报
回复
结果是什么样?
x星空 2018-05-17
  • 打赏
  • 举报
回复
结果是
引用 4 楼 sinat_28984567 的回复:
结果是什么样?
引用 4 楼 sinat_28984567 的回复:
结果是什么样?
结果是 F1 张三 王三 三次 0.6621 0.6621
x星空 2018-05-17
  • 打赏
  • 举报
回复
code表
-----------------------------------------
样品编号 T_Field
张三 F2
张四 F3
张五 F4
王三 F5
王四 F6
王五 F7


DATA表
-------------------------
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
一次 0.4486 0.4486 0.4486 0.4486 0.4486 0.4486 0.4486 0.4486 0.4486
二次 0.6601 0.6601 0.6601 0.6601 0.6601 0.6601 0.6498 0.6601 0.6601
三次 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621
四次 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621 0.6621

现在筛选 某张三和王三 的第三次结果.
二月十六 2018-05-17
  • 打赏
  • 举报
回复
建议楼主列出表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
shoppo0505 2018-05-17
  • 打赏
  • 举报
回复
给出具体数据吧,你说的太抽象了。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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