救命啊!100分啊!用sql在交叉表中怎样查询(100分)

  • 主题发起人 主题发起人 何学文
  • 开始时间 开始时间

何学文

Unregistered / Unconfirmed
GUEST, unregistred user!
表是这样的
| a1 |a2 |a3 |a4|
--------------------------------------
职务1 |100 |105|108|123|
职务2 |104 |106|109|140|
职务3 |200 |210|300|380|
通过a 和 职务 找到对应的值 例如 a2 and 职务3 得 210

请高手指点!!
 
这是物理表,还是逻辑表
 
如果要查a2,职务3
strZW :='职务3';
I := 2;
format('select table.a%s from table where 职务="%s"',[inttostr(I),strZW]);
总之,就是拼合字符串呗!
 
你的表应该这样建:
表名是:zzz;
字段名为:xy,a1,a2,a3;
职务1,职务2,职务3 均是 xy 字段的内容;
int1 是整形值 表示 a 后面的数;
str1 是字符串 表示 是什麽职务;
strsql 是要存放sql语句的字符串变量。
这样在查询时可以这样写:
strsql:='select a'+IntToStr(int1)+' from zzz where xy="'+str1+'"';
 
我还有一张表呢!都是物理表。
字段 id 职务 a
记录有 1 职务1 a2
2 职务2 a3
3 职务1 a1
我想从这两个表中得到 每个id 的 工资,最好在一个sql中实现
请再想想吧!
听说控件decision cube 可以实现的
 
要是还有张表 id 职务 A
记录 1 教授 a1
2 教授 a3
3 助教 a2
何上面的表连接查询怎么办呀!
 
sql server好像支持产生交叉表的查询,记不到了,你买本书嘛
 
我给你出个主意,可否把物理表的数据引入关系数据表??
这样用sql就好办多了?
 
select
职务,
sum(case when a='a1' then 1 else 0 end) as a1,
sum(case when a='a2' then 1 else 0 end) as a2,
sum(case when a='a3' then 1 else 0 end) as a3,
sum(case when a='a4' then 1 else 0 end) as a4,

from yourtable
Group by 职务
 
我看还是做成关系型表,用join on联查吧
 
好办啊!

/*
@a为要传递的a的值,@duty为要传递的职务,假设表名为table1
*/

declare @a varchar(20)
declare @duty varchar(20)

exec('select '+@a+' from table1 where (职务='''+@duty+''')')
 
多人接受答案了。
 

Similar threads

后退
顶部