0

C# win フォームに取り込む前に、SQL Server ストアド プロシージャで xml を逆シリアル化しようとしています。私の現在の結果テーブルは次のようになります。

ここに画像の説明を入力

編集:上の表は小さすぎて読むことができないため、以下に内容の例を示します。

列 1 は時刻 07:00、07:09 などです。
列 2 には次のデータが含まれます:
行 1:

ABADILLA ARIEL<RegistrationId>29</RegistrationId>, BLAKE LORCAN<RegistrationId>30</RegistrationId>, CRONIN SHANE<RegistrationId>31</RegistrationId>

行 2:

ADAMS NORMAN<RegistrationId>33</RegistrationId>, ADAMS WILLIAM<RegistrationId>34</RegistrationId>, AHEARNE PAUL<RegistrationId>35</RegistrationId>, LAWLOR DES<RegistrationId>32</RegistrationId>

したがって、各行には最大 4 つのエントリを含めることができます。

編集を終了

このテーブルでいくつかのことを実行できるようにしたいと考えています。主に、次の形式に変更できるようにする必要があります。

ここに画像の説明を入力

しかし、最終的には名前だけで情報を表示したいのですが、実際には表示せずに登録番号へのリンクを維持します。この部分はc#のwinフォームの方がやりやすいかも知れないので、上記のような形に出来れば良いと思います。

initialls に示されている結果テーブルを返すためのこれまでの私の SQL コードは次のとおりです。

DECLARE @Registered TABLE
(CompetitionName VARCHAR(50),
CompetitionDate  Date,
StartTime TIME,
RegistrationId INTEGER,
PlayersName  Varchar(60)
)


INSERT INTO @Registered
SELECT MAX(c.CompetitionName) AS 'Competition Name', MAX(c.[Date]) AS 'Competition Date', 
CONVERT(VARCHAR, r.PlayersStartTime, 108) AS 'Start Time', MAX(r.RegistrationId) AS RegistrationId,
CASE WHEN m.MemberId IS NOT NULL THEN (m.Surname + ' ' + m.FirstName) ELSE (nm.Surname + ' '+ nm.Firstname) END AS PlayersName
FROM dbo.Competitions c
LEFT JOIN [dbo].[Registration] r ON c.[CompetitionId] = r.[CompetitionId]
LEFT JOIN dbo.Members m ON r.MemberId = m.MemberId
LEFT JOIN dbo.NonMembers nm ON r.NonMemberId = nm.NonMemberId
WHERE [Date] = '20130104'
AND c.CompetitionId = 10
GROUP BY r.PlayersStartTime, m.MemberId, m.FirstName, m.Surname, nm.FirstName, nm.Surname
----

SELECT DISTINCT Main.StartTime, 
 STUFF((SELECT ', ' + PlayersName, + RegistrationId
  FROM @Registered list
  WHERE list.StartTime = Main.StartTime
  FOR XML PATH ('')),1,2,''
  ) AS PlayerList
FROM @Registered Main;
4

0 に答える 0