當前位置:首頁 » 編程語言 » 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;

熱點內容
2手安卓手機交易平台哪個好 發布:2025-07-27 17:39:51 瀏覽:688
安卓手機框架哪個好 發布:2025-07-27 17:39:49 瀏覽:31
ftp如何登錄另一方的伺服器 發布:2025-07-27 17:39:06 瀏覽:624
我的世界怎麼做雲夢城伺服器 發布:2025-07-27 17:38:58 瀏覽:682
晾乾訪問 發布:2025-07-27 17:32:11 瀏覽:853
忘了華為賬號和密碼怎麼辦 發布:2025-07-27 17:20:52 瀏覽:78
c是面向對象的語言嗎 發布:2025-07-27 17:19:54 瀏覽:990
函數編譯與預處理 發布:2025-07-27 17:19:50 瀏覽:808
劇本殺2026中的密碼是什麼 發布:2025-07-27 17:19:48 瀏覽:589
大華伺服器ip和埠 發布:2025-07-27 17:06:23 瀏覽:346