0

我有一张表,其中包含以下字段:City nvarchar(50)、TestName nvarchar(200)、Method nvarchar(500)、Cap nvarchar(3)、Unit nvarchar(3)

我不想显示数据

City || Testname  || Method || Cap || Unit 

相反,我想以以下方式显示数据:

TestName  || City ||    City1   ||   City2   ||          
          ||      ||CAP || Unit ||CAP || Unit||

任何想法以这种形式格式化数据?

使用 SQL 或 C#.net 代码?

4

3 回答 3

1

在 SQL 中,您无法生成这样的设置。

您可以做的是创建一个 C# 程序并使用一些现有的 Grid 库。仅举几例,您可以检查TelerikDevExpress,它们具有强大的网格控件。它们都是有代价的,我没有使用过其他任何人。

您将不得不将表格“拆分”成master-detail表格并提供网格。

免责声明

我不是想为上述产品做广告。这只是个人意见。两者我都用过,我喜欢 DevExpress,但肯定还有很多其他强大的库。

于 2013-09-17T06:37:17.593 回答
0

我能想到的最好的是

DECLARE  @sql  NVARCHAR(MAX),
         @cols NVARCHAR(MAX)

SELECT @cols = STUFF(
(SELECT ',
MAX(CASE WHEN [City] = ''' + [City] + ''' THEN [Cap] ELSE NULL END) AS [' + [City] + 'Cap],
MAX(CASE WHEN [City] = ''' + [City] + ''' THEN [Unit] ELSE NULL END) AS [' + [City] + 'Unit]'
FROM Table1
GROUP BY City
ORDER BY City 
FOR XML PATH(''),type).value('.','varchar(max)'), 1, 2, '')

SET @sql = 'SELECT [Testname], ' + @cols + '  FROM Table1 GROUP BY [Testname]'

PRINT @sql

EXECUTE(@sql)

它生成具有以下结构的表

Testname | City1Cap | City1Unit | City2Cap | City2Unit | City3Cap | City3Unit | etc.
于 2013-09-17T08:31:07.873 回答
0

可能是这样:

select TestName, City, City City1, City City2, '', Cap CAP, Unit, Cap CAP, Unit Unit
from YourTable
于 2013-09-17T06:37:21.817 回答