T-Sql选择并将多个行和列连接成一行和一列

时间:2011-11-18 08:58:39

标签: c# .net sql-server-2008 tsql select

基本上,我想从存储过程中只返回一行和一列结果。

例如,我的示例数据和表格如下所示:

ColoumA INT
ColoumB INT
ColoumC NVARCHAR(MAX)

ColoumA  ColoumB  ColoumC
   1       1      ErrorMessage1
   2       2      ErrorMessage2
   3       3      ErrorMessage3

成功执行存储过程成功后,如果成功, 返回结果是一个字符串值,它结合了上面的所有细节。例如

或者在另一个Word中,我想将所有值存储在TBL.rows[0][0]

中 当我打电话给代码

时,在C#.net中

String ReturnValue = "";
Datatable tbl = new Datatable(AREA);
ReturnValue = tbl.Rows[0][0].ToString().Trim();
Console.Writeline("Sample Output");
Console.Writeline(ReturnValue);

我期待这样的事情:

Sample Output
ColoumA: 1, ColoumB 1, ErrorMessage1
ColoumB: 2, ColoumB 2, ErrorMessage2
ColoumC: 3, ColoumC 3, ErrorMessage3

我可以使用T-Sql Statment进行选择吗?如果可以这样做?我怎么能得到它?

希望有人能理解并回答我的问题。

谢谢你:

PS:抱歉我的英语解释不好

1 个答案:

答案 0 :(得分:3)

我的强烈建议在这里将是:不要。将其作为网格(常规SELECT)访问,并在您的应用层进行任何处理,即

var sb = new StringBuilder();
using(var reader = cmd.ExecuteReader()) {
  while(reader.Read()) {
    sb.Append("ColoumA: ").Append(reader.GetInt32(0))
      .Append(", Coloum B").Append(reader.GetInt32(1))
      .Append(", ").Append(reader.GetString(2)).AppendLine();
  }
}
string s  = sb.ToString();

但是,您可以通过以下方式在TSQL中执行此操作:

declare @result varchar(max) = ''
select @result = @result + 'ColoumA: ' + CONVERT(ColoumA, varchar(10)) +
          ', ColoumB ' + CONVERT(ColoumB, varchar(10)) + ', ' + ColoumC + '
' -- newline!
from ...

select @result

select @result = @result + ...模式几乎与您描述的相同。