2012-01-11 8 views
0

SQL Server 2005.テーブルスキーマは、MarketdataID、Datatype、Date、Source、Coordinate、Valueです。 PKはValue以外のすべてです。データは複数のソースから入手でき、指定された日付には利用できない場合があります。私は、指定された日付の前に最新の日付を取得し、日付ごとに1つのソースしか取得しません。これらの2つのSQLクエリを1つに結合するにはどうすればよいですか?

SELECT top 1 [Source], [Date] FROM Market 
WHERE MarketDataID = ? 
AND DataType = ? 
AND [Date] <= ? 
order by [date] desc, [source] 

このクエリで返された日付とソースを使用します。

SELECT [Coordinate], [Value] FROM Market 
WHERE MarketDataID = ? 
AND DataType = ? 
AND [Date] = ? 
AND [Source] = ? 
ORDER BY [coordinate] 
+2

SQL Serverのバージョンは、あなたがたを使用していますか? – sll

+1

これはどのRDBMSですか? – Yuck

+12

あなたがやろうとしていることがはっきりしない - あなたは単にSQL文を "結合する"ことはできません。どのような成果を達成しようとしていますか? –

答えて

5
SELECT [Coordinate], [Value] 
    FROM Market AS m0 
    JOIN (SELECT TOP 1 m2.[Source], m2.[Date], m2.MarketDataID, m2.DataType 
      FROM Market AS m2 
     WHERE m2.MarketDataID = ? 
      AND m2.DataType = ? 
      AND m2.[Date] <= ? 
      ORDER BY m2.[Date] DESC, m2.[Source] 
     ) AS m1 
    ON m0.[Source]  = m1.[Source] 
    AND m0.[Date]  = m1.[Date] 
    AND m0.MarketDataID = m1.MarketDataID 
    AND m0.DataType  = m1.DataType 
ORDER BY [coordinate] 
+0

SQL Server 2005で 'join(select ...)'が機能する限り、これはそうかもしれません。 – AnotherParker

関連する問題