資料一行變多行的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...