「su」と「wb」の2つのテーブルがあります。属性「su.a」と「wb.b」でそれらの間で左結合が行われます。テーブル「wb」には、「l_datum」フィールドも含まれています。必要な出力:テーブル間で左結合を作成しますが、結合の「wb」テーブルから「wb.l_datum」フィールドの最大値を持つ行のみを取得します。DBフレーバー:Teradata助けてくれませんか?
質問する
104 次
7 に答える
1
Teradataについてはわかりませんが、通常のSQLでは次のようにします。
select su.*, wb.*
from su
join wb on su.a = wb.b
join (
select wb.b as b, max(wb.l_datum)
from wb
group by wb.b
) t on wb.b = t.b
于 2013-03-07T09:34:56.497 に答える
0
su
対応するwb
レコードが見つからないレコードを引き続き取得するために、wb
結合する前にテーブルをフィルタリングできます。正確に受け入れられる構文はデータベースごとにわずかに異なりますが、次のようになります。
SELECT ...
FROM su
LEFT JOIN (
SELECT *
FROM wb
WHERE wb.l_datum = (
SELECT MAX(wb_maxdatum.l_datum)
FROM wb AS wb_maxdatum)
) AS wb_filtered
ON wb_filtered.b = su.a
また、試すことができます
WHERE wb.l_datum = (
SELECT MAX(wb_maxdatum.l_datum)
FROM wb AS wb_maxdatum
WHERE wb_maxdatum.b = wb.b)
b
すべての行ではなく、あたりの最大日付を取得します。
于 2013-03-07T09:54:45.217 に答える
0
select * from wb w left join su s
on w.b=s.a
where w.l_datum=(select max(l_datum) from wb );
于 2013-03-07T09:45:00.077 に答える
0
追加の結合を使用しないことを検討している場合...揮発性テーブルを活用して処理をステップに分割することを検討しましたか?
-- get max wb table records
CREATE VOLATILE TABLE vt_01_wb
AS
(
SEL t1.*
FROM wb t1
LEFT JOIN (SEL b, MAX(l_datum) max_l_datum FROM wb GROUP BY 1) t2
WHERE t1.l_datum = t2.max_l_datum
)
WITH DATA PRIMARY INDEX(b)
ON COMMIT PRESERVE ROWS;
CREATE VOLATILE TABLE vt_02
AS
(
SEL su.*, wb.*
FROM su
-- volatile table already contians max l_datum
LEFT JOIN vt_01_wb wb ON su.a = wb.b
) WITH DATA
ON COMMIT PRESERVE ROWS;
SEL * FROM vt_02
于 2013-03-22T20:10:07.660 に答える
0
Window Aggregate 関数と句をLEFT JOIN
使用して を派生テーブルに置き換えて、 の値ごとに の値を返すとどうなるでしょうか。QUALIFY
MAX
l_datum
b
select su.*, wb.*
from su
left join
(
select *
from wb
qualify l_datum = max(l_datum) over(partition by wb.b)
) t on wb.b = t.b
于 2013-03-07T14:12:59.990 に答える
0
select a
from su
left join wb
on (su.a = wb.b)
where wb.l_datum = (select max(l_datum) from wb)
于 2013-03-07T09:35:02.843 に答える
0
一般的に、私が考えることができるのは次のとおりです。
SELECT col1, col2...
FROM su
LEFT OUTER JOIN wb
ON
su.a = wb.b
WHERE
wb.l_datum = (SELECT max(l_datum) FROM wb)
しかし、グループによっては複数の最大データが必要だと思います。その場合は、GROUP BY を使用します。
于 2013-03-07T09:36:21.763 に答える