❶ sql一次更新多行多列數據。
.net里有個控制項的功能和你說的類似,不知道是不是你要的功能,
SqlDataAdapter是 DataSet和 SQL Server之間的橋接器,用於檢索和保存數據。SqlDataAdapter通過對數據源使用適當的Transact-SQL語句映射 Fill(它可更改DataSet中的數據以匹配數據源中的數據)和 Update(它可更改數據源中的數據以匹配 DataSet中的數據)來提供這一橋接。當SqlDataAdapter填充 DataSet時,它為返回的數據創建必需的表和列(如果這些表和列尚不存在)。
喜歡的話你可以查查
❷ SQL SERVER中列數少,行數多的表有什麼優化辦法
最好把表結構發上來,並且要說明三個列,分別代表什麼以及為什麼要這樣做
❸ SQL如何實現一列多行
這是交叉表啊,網路下就好了。
❹ SQL在一個列中插入多行數據
無任何邏輯的數字,這個要看是什麼資料庫,各個資料庫產生隨機數的方法是不一樣的。
另外
「我要在wo那一列中添加三行無任何邏輯的數字 」
這個是用update不是insert
看你的應該是sql server資料庫:sql如下
update Brother set wo=dbo.udf_GetRandomInteger(1,100)
❺ SQL server把少列多行拼接成多列多行
SELECT[date],
MAX(CASEWHEN[id]='a'THEN[金額]ELSENULLEND)AS'a.金額',
MAX(CASEWHEN[id]='a'THEN[筆數]ELSENULLEND)AS'a.筆數',
MAX(CASEWHEN[id]='b'THEN[金額]ELSENULLEND)AS'b.金額',
MAX(CASEWHEN[id]='b'THEN[筆數]ELSENULLEND)AS'b.筆數',
MAX(CASEWHEN[id]='c'THEN[金額]ELSENULLEND)AS'c.金額',
MAX(CASEWHEN[id]='c'THEN[筆數]ELSENULLEND)AS'c.筆數',
MAX(CASEWHEN[id]='d'THEN[金額]ELSENULLEND)AS'd.金額',
MAX(CASEWHEN[id]='d'THEN[筆數]ELSENULLEND)AS'd.筆數',
MAX(CASEWHEN[id]='e'THEN[金額]ELSENULLEND)AS'e.金額',
MAX(CASEWHEN[id]='e'THEN[筆數]ELSENULLEND)AS'e.筆數'
FROM表XXXGROUPBY[date];
❻ sql 將多列數據轉換成多行顯示
select a as d from t1
union all
select b from t1
union all
select c from t1
通用只可用動態
declare @s nvarchar(4000)
select @s=isnull(@s+'union all select ','select ')+Name+' as D from 表名' from syscolumns where ID=object_id('表名')
exec(@s)
❼ MS SQL SERVER 如何把多列的值 , 變成一列多行 .
行轉列,列轉行是我們在開發過程中經常碰到的問題
行轉列一般通過CASE WHEN 語句來實現,也可以通過 SQL SERVER 2005 新增的運算符PIVOT來實現。用傳統的方法,比較好理解。層次清晰,而且比較習慣。
但是PIVOT 、UNPIVOT提供的語法比一系列復雜的SELECT...CASE 語句中所指定的語法更簡單、更具可讀性.
--行轉列的靜態方案一:CASE WHEN,兼容sql2000
select custid,
3 sum(case when YEAR(orderdate)=2002 then qty end) as [2002],
sum(case when YEAR(orderdate)=2003 then qty end) as [2003],
sum(case when YEAR(orderdate)=2004 then qty end) as [2004]
from orders
group by custid;--行轉列的靜態方案二:PIVOT,sql2005及以後版本
select *
from (select custid,YEAR(orderdate) as years,qty from orders) as ord
pivot(sum(qty) for years in([2002],[2003],[2004]))as p
❽ sql2000 表中一列內容拆分轉多行語句
--搭建環境
create table #(a int,b varchar(60))
insert into # select 1,'123,456,xxx,789' union all select 2,'321,213,sss,985'
select * from #
go
------------------------------測試---------------------------------------------
--update組成查詢字元串
update # set b=';'+b+';'
update # set b=replace(b,';','''')
update # set b=replace(b,',',''',''')
go
--創建中間表
create table #tmp(a int identity(1,1),co1 varchar(10),co2 varchar(10),co3 varchar(10),co4 varchar(10))
go
--如果#表中行數太多,可能會超過8000的長度,可以考慮用游標替換這部分
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+b+' union all select ' from #
select @sql='select '+left(@sql,len(@sql)-17)
select @sql='insert into #tmp(co1,co2,co3,co4) '+@sql
print @sql
exec(@sql)
select * from #tmp
---------------------------------
select a,co1 from #tmp union all
select a,co2 from #tmp union all
select a,co3 from #tmp union all
select a,co4 from #tmp
order by a
❾ sql 分列多行
參考以下sql
--測試一
--'abc|efg|hij|klm'參數一:截取的字元串str
--'|'參數二:在截取的字元串str中查詢目標字元x
--1參數三:出現的位次n
--截取str中x出現n次之前的所有字元
--截取'abc|efg|hij|klm'中第一個'|'之前的所有字元abc
SELECTSUBSTRING_INDEX('abc|efg|hij|klm','|',1)
--測試二
--'abc|efg|hij|klm'參數一:截取的字元串str
--'|'參數二:在截取的字元串str中查詢目標字元x
---1參數三:當為負數時,則表示倒序的位次
--截取str後中x出現從後往前數n次之後的所有字元
--截取'abc|efg|hij|klm'中從後往前數第一個'|'之後的所有字元klm
SELECTSUBSTRING_INDEX('abc|efg|hij|klm','|',-1)
❿ sql server ,求sql 語句把單列的數據分為多行顯示
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + 費用 from a group by 費用
set @sql = '[' + @sql + ']'
exec ('select * from (select * from a) a pivot (max(金額) for 費用 in (' + @sql + ')) b')