資料一行變多行的SQL查詢

2021-04-13 07:39:29 字數 1839 閱讀 5021

資料一行變多行的sql查詢

對於資料表中的某一資料列,要求顯示時資料不能超過5位,如果超過則多行顯示。例如,當該列值為100000時,需要將其顯示為兩行,其中第一行的該列值為99999,第二行的該列值為1,其他列值完全相同。

例如:有一張表產量表t,有三列資料,年份(year),車間號(id),產量(qty)。要求顯示第一車間的產量,其中顯示結果要求同上。

**如下:

declare @s varchar(2000),@i int

declare @year char(4),@id varchar(10),@qty int

set @s='select '

declare cur cursor for

select cast([year] as char(4)),[id],qty from t where [id]=1

open cur

fetch next from cur

into @year,@id,@qty

while @@fetch_status = 0

begin

if @qty>99999

begin

set @i=@qty/99999

while(@i>0)

begin

set @s=@s+@year+' as year,'''+@id+''' as id,99999 as qty'+' union all select '

set @i=@i-1

end

set @s=@s+@year+' as year,'''+@id+''' as id,'+cast(@qty%99999 as varchar(5))+' as qty'+' union all select '

end

else

begin

set @s=@s+@year+' as year,'''+@id+''' as id,'+cast(@qty as varchar(5))+' as qty'+' union all select '

end

fetch next from cur

into @year,@id,@qty

end

select @s=left(@s,len(@s)-16)

exec(@s)

close cur

deallocate cur

一行變多行

xml declare tb table departmentid int,departmentcode varchar 100 insert into tb select 1,1 2 union all select 2,1 2 3 union all select 3,1 2 3 4 union...

SQL查詢多行合併成一行

問題描述 無論是在sql 2000,還是在 sql 2005 中,都沒有提供字串的聚合函式,所以,當我們在處理下列要求時,會比較麻煩 有表tb,如下 id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到結果 id values 1 aa,bb 2 aaa,bbb,ccc...

sql 多行轉成一行

例如表a id data 1 a 1 b 1 c 2 d 2 f 轉換成表b 1 a b c 2 d e smerg是自定義函式 建立乙個函式smerg create function smerg id int returns varchar 8000 asbegin declare str var...