0

我正在寻找将单行数据显示为单列(多行)的方法。例如,

场A场B
-------- ---------
1 一些文本 [行]


标头值 [col]
------ ------
字段A 1 [row1]
FieldB SomeText [row2]

有没有办法用 SQL Server 2005 做到这一点?

4

5 回答 5

2

是的,有一个 TSQL 命令,PIVOT。关于这个主题有几个现有的线程;但我不能随便找到一个。

我通常的回答(可能是这些线程中的 5 或 6 个)是考虑在适当的情况下使用 Excel 或 Access - 这是向最终用户提供价值的一种非常简单的方法。但是YMMV。

于 2008-12-23T22:31:31.247 回答
2

您可以使用此处解释的unpivot

Declare @tbl Table
(
  c1 int,
  c2 int,
  c3 int
)

Insert into @tbl Values(1,2,3)

Select
  cname,
  cval
From
  (
    Select C1,C2,C3 From @tbl
  ) t
UNPIVOT
  (Cval For Cname In
    (C1,C2,C3)
  )As U

但它通常不灵活且缓慢。您可以使用联合,但在维护方面通常更差,但可能很快(需要检查)或使用动态查询和联合

于 2008-12-23T23:08:37.613 回答
1

另一种简单的方法:

从表中选择“FieldA”,将 FieldA 作为值并从表中
选择
“FieldB”,将 FieldB 作为值

但是枢轴确实是您想要尝试的。

于 2008-12-23T22:34:00.897 回答
1

像其他几个响应所建议的那样,使用 T-SQL PIVOT 命令。

如果您有权访问 SQL Server Reporting Services,您也​​可以根据您的简单查询创建报告并使用矩阵报告控件。将您的字段拖放到控件上,您就完成了!

于 2008-12-23T22:39:54.600 回答
-1

如果您正在寻找特定的东西,即不是通用解决方案,而是为您的特定数据库量身定制的解决方案,那么您可以执行以下操作:

select Field1+';'+convert(nvarchar(255), Field2 )+';'+convert(nvarchar(255),Field3 ) from Table

使用对 nvarchar(255) 的转换,这样无论其中包含什么字符,您都不会遇到问题,请记住在运行 select 之前修复排序规则(否则您永远不知道您的 orderby 和 groupby 会发生什么)。

于 2009-01-23T10:09:37.093 回答