2012-10-03 52 views
0

我有2列的表格:如何獲得一些東西作爲Ltrim(對象,數字)在SQL?

select product, quantity from datainformation 

這臺返回:

product quantity 
1  10 
2  30 
4  23 
191  10 
900  1 
1234  5 
12345  2 
  1. 兩列是int類型。
  2. 表可以有N條記錄

我需要2個字符串每50條記錄。我的問題是如何獲得這些字符串:

stringproducts='1 2 4 191 900 1234 12345' 
stringquantity='10 30 23 10 1 5 2 ' 

現在我需要這些字符串每50條記錄,這樣,例如,如果我有51條記錄,我需要 我的第二個「塊」來有最後的產品和最後的數量。

在另一種語言中,我可以使用ltrim(cad,5)。我如何在SQL中執行此操作?

我可以使用這個東西嗎?或者我需要一個循環,並將它們連成一個1? 我相信與一個東西,它可能會更容易(也許是一個循環內的東西,但它會更容易循環的每個記錄)

+0

這是你在找什麼? http://msdn.microsoft.com/es-es/library/ms177827.aspx – redej

回答

1

您可以使用FOR XML PATHSTUFF()

select 
    stuff((
     select ' ' + cast(product as char(10)) 
     from datainformation 
     for XML path('')),1,1,'') as products, 
stuff((
     select ' ' + cast(quantity as char(10)) 
     from datainformation 
     for XML path('')),1,1,'') as quantity 

SQL Fiddle with Demo

0

如果你把它作爲CHAR(5),它將有尾隨空格爲你格式化好的串聯字符串添加一個5字符塊。

declare @t table (product int, quantity int); 
insert @t select 
1  ,10 union all select 
2  ,30 union all select 
4  ,23 union all select 
191  ,10 union all select 
900  , 1 union all select 
1234  , 5 union all select 
12345 , 2; 

declare @products varchar(max); 
declare @quantity varchar(max); 

select @products = coalesce(@products,'') 
       + cast(product as char(5)), 
     @quantity = coalesce(@quantity,'') 
       + cast(quantity as char(5)) 
from @t 
order by product 

select @products, @quantity 
相關問題