0

次のフィールドを含むテーブルが 1 つあります: 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# プログラムを作成し、存在するいくつかのグリッド ライブラリを使用することです。ほんの数例を挙げると、強力なグリッド コントロールを備えたTelerikおよびをチェックできます。DevExpressどちらもコストがかかりますが、私は他の人を使用していません。

テーブルを「分割」して、masterグリッドdetailを形成してフィードする必要があります。

免責事項

私は前述の製品を宣伝しようとしているわけではありません。あくまで個人的な意見です。私は両方を使用しており、DevExpress が好きですが、他にも多くの強力なライブラリがあるに違いありません。

于 2013-09-17T06:37:17.593 に答える
0

そうかもしれません:

select TestName, City, City City1, City City2, '', Cap CAP, Unit, Cap CAP, Unit Unit
from YourTable
于 2013-09-17T06:37:21.817 に答える
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 に答える