私はfoxprosqlを作成しており、3つの異なるテーブルの3つの日付列を新しい日付列に結合する必要があります。例として、3つのテーブルがA、B、およびCであり、日付列がAdate、Bdate、およびCdateである場合、それらを別個の別個の日付としてTransDateという列とSQLに結合するにはどうすればよいですか?私はこれで非常に新しいので、可能であればコードのサンプルをいただければ幸いです
2 に答える
ええ、もっと日付を明確にする必要があります。3を1に結合することはできません...または、特定のトランザクションに関連付けられた3つの日付すべてを表示する1つの結果行が必要ですか?または、(たとえば)3つの日付の最も早い日付で、最初の取引日がいつ開始されたかを識別したいですか?いずれにせよ、質問で明確にしてください。ただし、テーブルの構造を詳しく知らなくても可能なオプションがあります...また、foxpro(VFP)テーブルから直接実行する場合は、明らかに追加する必要があります。 「;」次のステートメントの行の続きとして
select
T1.ADate,
T2.BDate,
T3.CDate,
iif( T1.ADate > T2.BDate and T1.ADate > T3.CDate, T1.ADate,
iif( T2.BDate > T1.ADate and T2.BDate > T3.CDate,
T2.BDate, T3.CDate ) ) as LargestDate,
iif( T1.ADate < T2.BDate and T1.ADate < T3.CDate, T1.ADate,
iif( T2.BDate < T1.ADate and T2.BDate < T3.CDate,
T2.BDate, T3.CDate ) ) as EarliestDate
from
YourTableA T1,
YourTableB T2,
YourTableC T3
where
T1.IDKey = T2.IDKey
AND T1.IDKey = T3.IDKey
into
cursor C_SomeTestResultCursor
繰り返しになりますが、3つのテーブルに共通する「キー」が何であるかはわかりません。そのため、その要素が何であれ、クエリを調整する必要があります。
新しい回答オプション...購入、在庫調整、または販売についてのコメントから、見たい出力の明確な説明やサンプルがない場合は、次のようなものが必要だと思います...
表A=購入表B=調整表C=販売
この構成に同意するかどうかはわかりませんが、簡単な説明からのみ示唆できます。もっと「元帳」スタイルの要約が必要だと思います
購入1月10日購入1月15日販売2月2日調整2月10日購入2月15日など...
それなら、UNIONをやります
select
"Purchase " as TransType,
T1.ADate as TransDate
from
YourTableA T1
where
T1.IDKey = ?SomeValueSuchAsAccount
order by
TransDate
UNION ALL
select
"Adjustments" as TransType,
T2.BDate as TransDate
from
YourTableB T2
where
T2.IDKey = ?SomeValueSuchAsAccount
UNION ALL
select
"Sales " as TransType,
T3.CDate as TransDate
from
YourTableB T3
where
T3.IDKey = ?SomeValueSuchAsAccount
私の仮定が間違っている場合は、そのようなトランザクション、データレイアウトなどのサンプルを、自分自身と他の人にもう少し提供してください。ライブデータは必要ありません。また、完全なテーブル構造や実際のテーブル名も必要ありません。ただし、特に将来的に支援が必要な場合は、さらに協力する必要があります。そうしないと、人々があなたの要求に驚かされる可能性があります。