Max Date を使用したクエリこんにちは、
日付列の最大日付に基づいて毎週更新されるファイルがあります。 毎週ファイルを開いて現在の最大日付を確認し、その最大日付以降のデータをクエリします。 Max Date を取り出して、使用しているクエリに挿入することはできますか?
現在、ファイルは 2019 年 8 月 15 日に更新されており、ファイルを更新するために 2019 年 8 月 15 日を超えるデータをクエリしたいと考えています。
Re: Max Date を使用してクエリを実行する@pmroz
ありがとうpmroz。 プレーンで簡単なコード。 非常に役立ちます。
Re: Max Date を使用してクエリを実行するOracle を使用している場合は、日付形式を明確にするために、日付フィールドに TO_DATE を使用することを検討してください。SQL Server を使用している場合は、yyyy-mm-dd がデフォルトの形式であるため、変換する必要はありません。
dv = today();
dvf = Format( dv, "yyyy-mm-dd" );
sql = Eval Insert( "select * where purchase_date > TO_DATE('^dvf^', 'yyyy-mm-dd')" );
show(sql);Re: Max Date を使用してクエリを実行するこんにちは、ブライアンさん
実際、すでに提供されている行を編集することで実行することができました。 単一引用符を含めるために、val 部分に追加の行を追加しました。 以下の一重引用符で val を更新しました。必要に応じて自由に批判してください。
val = Column( 1 )[1];
dv = As Date( val );
dvf = Format( dv, "yyyy-mm-dd" );
dvfs = ("'" || dvf || "'");
Show( dvfs );
sql = Eval Insert( "select * where purchase_date > ^dvfs^" );
Re: Max Date を使用してクエリを実行するこんにちは、ブライアンさん
日付の前後に一重引用符を追加したいと考えています (特定の DB からクエリを実行するために必要です)。 一重引用符を eval に直接追加するだけでよいでしょうか?
例:
sql = Eval Insert( "select * where purchase_date > '^dvf^'" );
Re: Max Date を使用してクエリを実行する前の例を変更すると、次のようになります。
val = Column( 1 )[1];
dv = As Date( val );
dvf = Format( dv, "m/d/y" );
Show( dvf );
sql = Eval Insert( "select * where purchase_date > ^dvf^" );
Show( sql );
Re: Max Date を使用してクエリを実行するありがとうブライアン、期待どおりに機能しました。 val を数値形式 (12/31/2010 や 31/12/2010 など) に再フォーマットすることは可能ですか? 日付に Dec などの文字が含まれていると、クエリでは機能しません。
Re: Max Date を使用してクエリを実行する前の例を使用して、次のように続けるとします。
val = 列( 1 )[1];
show(val);
Show( As Date( val ) );
sql = eval insert("select * where Purchase_date > ^As Date(val)^");
表示(SQL);
すると、ログには次のように表示されます。
val = 3376598400;
Date(val) = 31Dec2010 として;
sql = "select * where Purchase_date > 31Dec2010";
したがって、結果の SQL を実行できます。
Re: Max Date を使用してクエリを実行する最初のテーブルから次の SQL に Max Date を挿入する方法を示していただけますか?
私が使用しているテーブルには、Purchase_Date というラベルの付いた列があり、データベースから新しいデータをクエリするために最大の操作を実行します。 クエリの例は次のとおりです。
dbc =データベース接続を作成する( 「DSN=製品; UID=」 ||IDC|| " ;PWD= " ||パス|| " ;MODE=共有;DBALIAS=PROD" );
データ_SQL =エヴァリンサート( 」
CUST_NM、PURCHASE_AMT、PURCHASE_DATE、PURCHASE_TM、ORDER_NUM、PRODUCT_NM、PRODUCT_TYP、COUNTRY_CD、APPROVE_DECLINED を選択してください
購入データから
ここで、購入日 > '2019-08-16'
および PRODUCT_TYP = 'Y'
('0840') の COUNTRY_CD
および APPROVE_DECLINED ='A'" );
データ_dt = SQLを実行する(dbc、データ_sql);
データベース接続を閉じる(dbc);
Re: Max Date を使用してクエリを実行する詳細を知らなくても、これらすべてを 1 つのクエリ内に収めることができるように思えます。ただし、いつでもクエリ ビルダーを使用して、日付を使用して問題のテーブルに対して Max を実行し、その値を抽出して別の SQL スクリプトに置き換えることができます。映画データベースで動作するクエリ ビルダーのスクリプトの例、日付列にレンタル日が含まれるレンタル テーブル、出力されるスクリプトは次のようになります。
New SQL Query(
Connection( "ODBC:DSN=SQLServer SQBTest;UID=sa;PWD=%_PWD_%;APP=JMP;WSID=machine;DATABASE=SQBTest;" ),
QueryName( "g6_Rentals" ),
Select(
Column(
"OrderDate",
"t1",
Alias( "Maximum-OrderDate" ),
SavedJMPName( "OrderDate" ),
Aggregation( "Maximum" ),
JMP Name( "Maximum-OrderDate", 0 ),
Numeric Format( "m/d/y", "-1", "NO", "" )
)
),
From( Table( "g6_Rentals", Schema( "SQBTest" ), Alias( "t1" ) ) )
) << Run Foreground();
val = Column( 1 )[1];
Show( As Date( val ) );
ここでは、日付列で最大値の集計を行っているだけです。結果のテーブルには 1 行と 1 列があり、そこから値を取り出してログに表示し、それが正しいことを確認します。
ブライアン・コーコラン
JMP開発