当前位置:首页 » 编程语言 » sql动态列名

sql动态列名

发布时间: 2022-04-03 05:28:31

sql怎么动态显示列名

如何动态法?

是不是遇到行转列问题?(比如,以本周的日期作为列)

将具体的问题(要求、表结构)post上来。

⑵ SQL语句如何实现动态列

你的这些值应该有个范围控制吧,比如:人工费(100-200) 材料费(1000-2000)。。。
你可以通过这些值的大小来判断是什么费用,整几个列,人工的放在这,材料的放在那,。。。
总之要有个判断的依据,照你这样,这也不确定,那也不确定,何苦来哉?

⑶ 如何实现这样的动态sql语句select * from table where 列名=关键字。

把where后面的语句由上层动态组建传入,拼接起来就可以了

⑷ sql查询as别名如何动态

一般采用
select a.cname , b.dvalue from 表a a inner join 表b b on a.cid=b.cid
然后根据 cname 的值,来在外面程序中 判断。

给你个动态列的示例,你可以参考下,符合你的要求!
declare @name varchar(100), @sql_str varchar(8000),@crt_sql varchar(8000),@drp_sql varchar(8000),@join varchar(8000)
select @name = '', @sql_str = 'select a.cid ', @join = ' from 表a a ', @crt_sql = '',@drp_sql = ''

declare usercursor cursor
for select distinct cname from 表a
open usercursor
FETCH NEXT FROM usercursor into @name
while @@FETCH_STATUS = 0
begin
--读取下一行数据把读取的数据放在变量中
declare @tb varchar(50)
set @tb = 'tmptmp_'+@name
set @crt_sql = ' select cid, dvalue as '+@name+' into '+ @tb + ' from 表b where cid in ( select cid from 表a where cname = '''+@name+''') '
exec(@crt_sql)
set @sql_str = @sql_str + ' , '+@tb+'.'+@name
set @join = @join + ' left join '+@tb+' on a.cid = '+@tb+'.cid '
set @drp_sql = @drp_sql +' DROP TABLE '+ @tb + ' '
FETCH NEXT FROM usercursor into @name
end
close usercursor
deallocate usercursor

exec(@sql_str+@join)
exec(@drp_sql)
-- print @sql_str+@join

⑸ sql怎么设置动态字段名

declare@Sqlnvarchar(1000)
declare@avarchar(10)
set@a='2014-5-22'
set@sql='SELECT*FROM表名aWHERE电话量'+@a+'=a.teltotal'
print(@sql)
exec(@sql)

里面前面的表名因为你未列出,不好知道你的表结构,以及你是一个表还是两个表。需要你自己修改一下。

⑹ SQL如何使用select动态列 from 进行查询

这就是传说中的交叉表
/*
普通行列转换

假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
*/

-------------------------------------------------------------------------
/*
想变成
姓名 语文 数学 物理
---------- ----------- ----------- -----------
李四 74 84 94
张三 74 83 93
*/

create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)

insert into tb(Name , Subject , Result) values('张三' , '语文' , 74)
insert into tb(Name , Subject , Result) values('张三' , '数学' , 83)
insert into tb(Name , Subject , Result) values('张三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('李四' , '语文' , 74)
insert into tb(Name , Subject , Result) values('李四' , '数学' , 84)
insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)
go

--动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)
/*
姓名 数学 物理 语文
---------- ----------- ----------- -----------
李四 84 94 74
张三 83 93 74
*/

⑺ PLSQL 获得动态游标 字段名(列名)

oracle动态游标问题: 游标查询的内容是 动态生成的,然后里面具体有多少个字段没办法事先知道,而动态游标赋值一定要用fetch到一个变量,有没办法把动态游标内容赋值到一个记录集或者表中,而这个表的字段和记录集字段是没办法预先定义好的,而是通过系统动态生成的!
具体例子如下:declare-- Local variables here
v_sql VARCHAR2(1024);
cur SYS_REFCURSOR;
v_column VARCHAR2(1024);
v_exe VARCHAR2(1024);begin---v_sql 是通过一连串的复杂逻辑程序生成的动态内容的 在这里就简单写了
v_sql:='select C_001,b_002,d_003 ..../*具体有多少个字段没办法事先知道*/from table1,table2 .../*具体有多少个字段没办法事先知道*/tablen where 1=1 and /*复杂条件*/';
v_column:= 'C_001+b_002/d_003';--这个变量也是通过复杂的逻辑生成的 没办法事先知道的 但是这里的字段都在 v_sql 中有
v_column := replace(replace(REPLACE(v_column,'b_','c.b_'),'c_','c.c_'),,'c_','c.d_');
FOR i IN 1..e_table(i);
v_exe:='INSERT INTO table_a SELECT'|| v_column||' FROM al' ; /*这里的动态生成的*/!

⑻ SQL查询动态列的方法

首先,这张表本身就很不合理,如果不是硬要用这种结构,推荐您使用一列存储数据,我有点明白您可能是要最后通过select生成一张月报表,不知我的猜想对吗?(好像还是没搞清楚)

就事论事吧
create proc xxx @day int
as
if @day=1 select * from 表 where D1=@day
if @day=2 select * from 表 where D2=@day
if @day=3 select * from 表 where D3=@day
if @day=4 select * from 表 where D4=@day
后面就不写了,共要31行,恐怕也是最好想出的办法了

⑼ Sql查询出来的时候怎么动态加入一列标识列

在SQL2005以上的版本,里面有一个专门你所要增加的列,试试哈

select * from (select row_number()over(order by 排序的字段)
as 自动序列,* from 表名) aa
where 自动序列

⑽ SQL 横向动态列

select id,name,max(case when id=y.id then alias else 0 end),
max(case when id=y.id then alias1 else 0 end)
from
(select a.id id,a.name name,b.alias,b.alias1 from tab1 a,tab2 b
where a.id=b.id) x,
tab 1 y

where x.id=y.id;

热点内容
安卓如何打开nc格式文件 发布:2025-07-27 19:47:45 浏览:352
压缩后的 发布:2025-07-27 19:39:22 浏览:579
怎么改服务密码 发布:2025-07-27 19:17:16 浏览:637
python小项目源码 发布:2025-07-27 19:12:19 浏览:369
python画矩形 发布:2025-07-27 19:07:31 浏览:995
小米盒子怎么看配置 发布:2025-07-27 19:00:34 浏览:838
百度打开密码是多少 发布:2025-07-27 18:53:11 浏览:23
华为方舟编译器免费使用 发布:2025-07-27 18:53:08 浏览:193
组态王与数据库连接 发布:2025-07-27 18:52:29 浏览:308
dhcp配置错误怎么修复 发布:2025-07-27 18:41:09 浏览:819