0

FOR XML の使用に関するいくつかの SO の質問に目を通しましたが、クエリに固有のものを見逃したか、見つけられませんでした。

幸いなことに、またはおそらくそうではないかもしれませんが、データを送信する必要があるサービスは、テーブルのフィールドを要素ではなく属性として送信する必要があります。これは、FOR XML AUTO を使用できることを意味します。ただし、正しい sql を作成して達成する方法がわからないことがいくつかあります。そのためのアドバイスを歓迎します。

一部のフィールド (たとえば、Log1、Log2、および Log3 という名前の 3 つがあるとします) は、ログのために引数として呼び出される 1 つの属性として返される必要があります。3 つのログ フィールドがすべて Null の場合は、空の文字列にする必要があります。データが含まれている場合は、区切り文字としてコンマで連結する必要があります。単純な合体はここでの答えではないと思いますが、他に何ができるかは完全にはわかりません。

私が言ったように、私はいくつかの提案を歓迎します。ありがとう。

編集

申し訳ありませんが、支援するためにいくつかのSQLを追加する必要がありました。

SELECT  LandingId,
    VesselId,
    TicketNumber,
    CONVERT(VARCHAR(10),LandingDate1,112) AS landingdate1,
    Log1,
    Log2,
    Log3,
    COALESCE(VesselName,'') AS vesselName,
    VesselOwner
FROM Landings.LandingHeaders AS sale  FOR XML AUTO

Log1、Log2、および Log3 はログになり、すべてが null の場合は空の文字列になり、データが含まれている場合はカンマ区切りのリストになります。

EDIT2 (機密保持のために VesselName と Owner を削除した現在の出力)

<sale LandingId="3388" VesselId="1" TicketNumber="1         " landingdate1="20130705" />

ログの値が null であるため、何も返されません。合体の形式を使用して、空の文字列またはコンマ区切りのリストを生成できるかどうかはわかりません。ticketNumber をトリミングする必要があることはわかっています。

4

1 に答える 1