:
Current Result
望ましい結果データ。私はモックアップオブジェクトは、次の時間あなたの仕事であるべきでテストシナリオを設定するためにやった...
このようにそれを試してみてください。
DECLARE @DimAssetMockup TABLE(AssetID INT,AssesName VARCHAR(100));
INSERT INTO @DimAssetMockup VALUES(1,'Asset 1'),(2,'Asset 2');
DECLARE @FactReturnMockup TABLE(AssetID INT,ValueDate DATETIME, ReturnValue DECIMAL(12,10))
INSERT INTO @FactReturnMockup VALUES(1,{d'2017-01-01'},0.11)
,(1,{d'2017-01-02'},0.12)
,(2,{d'2017-02-01'},0.21)
,(2,{d'2017-02-02'},0.22);
SELECT
(
SELECT 'USD' AS 'Currency'
,'TestDatabase' AS 'Datasource'
,AssesName AS [Name]
,(
SELECT [Value].ValueDate AS [@Date]
,[Value].ReturnValue as [@ROR]
FROM @FactReturnMockup AS [Value]
WHERE [Value].AssetID=Asset.AssetID
FOR XML PATH('Value'),TYPE
) AS [Returns]
,'Daily' AS [Returns/Frequency]
FROM @DimAssetMockup Asset
FOR XML PATH('Asset'),ROOT('Assets'),TYPE
)
FOR XML PATH('Body'),ROOT('ASPackage');
結果を
<ASPackage>
<Body>
<Assets>
<Asset>
<Currency>USD</Currency>
<Datasource>TestDatabase</Datasource>
<Name>Asset 1</Name>
<Returns>
<Value Date="2017-01-01T00:00:00" ROR="0.1100000000" />
<Value Date="2017-01-02T00:00:00" ROR="0.1200000000" />
<Frequency>Daily</Frequency>
</Returns>
</Asset>
<Asset>
<Currency>USD</Currency>
<Datasource>TestDatabase</Datasource>
<Name>Asset 2</Name>
<Returns>
<Value Date="2017-02-01T00:00:00" ROR="0.2100000000" />
<Value Date="2017-02-02T00:00:00" ROR="0.2200000000" />
<Frequency>Daily</Frequency>
</Returns>
</Asset>
</Assets>
</Body>
</ASPackage>
投稿クエリが無効です...これを編集し、いくつかのインデントを追加して、サブ選択を視覚的にグループ化してください。最小化されたテーブルと適切なサンプルデータを持つ*完全スタンドアロン*のサンプルを作成してみてください。 – Shnugo
そして、使用している実際のデータベース製品にタグを付けてください(私はそれが '[sql-server]'だと仮定します)。 – Shnugo
こんにちはShnugo、助けてくれてありがとう - クエリが更新されました –