問題タブ [ansi-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 最新の日付に基づいて最新バージョンのデータの値を選択するSQLステートメント
簡単なクエリがあり、もっとエレガントにコーディングできるかどうか疑問に思っています。最終的なソリューションは、ANSIに準拠している必要があります。
日付とバージョンに基づいてテーブルから最新の値を取得する必要があります。サンプルはより明確に説明します:
だから私は出力が
これは上記のクエリに基づいています。
私はこのソリューションに特に満足していません-これを達成するためのより良い方法はありますか?
sql - Oracle DECODE の標準 SQL 代替
Oracle の DECODE 関数に相当する ANSI SQL はありますか?
Oracle のデコード関数は、SQL の IF-THEN-ELSE 構造です。
sql - 手続き型コードを SQL に展開する
最近、手続き型コードを SQL に変換する作業に興味を持っています。完全な手続き型言語ですべてを表現できるわけではないことはわかっています。
しかし、特別な目的の手続き型言語がある場合はどうなるでしょうか? たとえば、次のように変換します。
これに:
このようなものに名前はありますか?
また、私の疑似コードでは、それは不変であり、ANSI SQL への (簡単な) 変換が明らかにないrow
ようなことを行うことは不可能であると想定しています。Table[0].FirstName...
誰かこれに名前をつけてくれませんか?
sql - テーブルの最後で検索を開始する SQL ANSI の方法はありますか?
特定のアプリでは、最後に挿入された行にある可能性が高いデータを常にクエリする必要があります。このテーブルは非常に大きくなるため、テーブルの最後でルックアップを開始するようにクエリを最適化する標準的な方法があるのではないかと思います。データベースがテーブルのデータをスタックのような構造で保存した場合、同じ最適化が得られると思います。そのため、最後に挿入された行が最初に検索されます。
sql - データベース エンジンと ANSI SQL 準拠
30 分ほど検索しましたが、さまざまなデータベース エンジンでサポートされている SQL ANSI 標準のレベルを示すリソースが見つかりません。
ほとんどのエンジンである程度のサポートが提供されているようですが、正式にサポートされているレベルを正確に知りたいです。
私は主に MySQL、PostgreSQL、SQL Server、および Oracle に興味があります。
編集: PostgreSQL には、コンプライアンスに関する素晴らしいページがあります。これは、まさに他のエンジンに関して私が探していたものです: http://www.postgresql.org/docs/current/interactive/features.html
sql - SQL 結合: SQL ANSI 標準の将来 (どこと結合)?
私たちは ETL ジョブを開発しており、コンサルタントはテーブルを結合するときに「古いスタイル」の SQL を使用しています。
内部結合句を使用する代わりに
私の質問は、長い目で見れば、古い「where join」を使用するリスクはありますか? この種の結合はどのくらいの期間サポートされ、ANSI 標準として保持されますか? 私たちのプラットフォームは SQL Server です。私の主な原因は、将来、これらの "where joins" がサポートされなくなることです。これが発生すると、「内部結合」スタイルの結合を使用して、すべての ETL ジョブを変更する必要があります。
sql - データを仮想的に表示するためのSQLコンプレックスビュー
次の表の表があります。
したがって、これは、数量に変化がある時間の一部に対する在庫を示しています。ここでの私の要件は、このテーブルにデータを仮想的に表示するビューを作成することです(在庫が特定の時間停止していない場合)。したがって、表示する必要のあるデータは次のとおりです。
つまり、データが特定の1時間存在しない場合でも、在庫がある最後の1時間の在庫を表示する必要があります。そして、私は列に1から23までのすべての利用可能な時間を含む別のテーブルを持っています。
以下の方法でパーティションオーバーを試みました。しかし、私は私の要件を達成するためにこれの周りにいくつかのことが欠けていると思います。
このクエリは、データのない時間について、在庫のあるすべての時間をnullとして与えています。Teradataなどのデータベースで使用できるようにANSISQLソリューションを検討しています。
パーティションを間違って使用していると思いますが、他の方法はありますか。CASE WHENで試してみましたが、在庫を1時間確認するには、何らかのループが必要です。
sql - PIVOT ステートメントの ANSI 仕様はありますか?
最近、PIVOT を使用してセル内の同時平均とカウントを表示するにはどうすればよいですか?という質問をしました。
質問は、SQL-Server (2005+) および Oracle (11g +) について回答されています。
明らかに、sql-server の実装はかなり制限されており、Oracle の実装では奇妙な列名が生成されます。
これらは独立したソリューションですか、それともいくつかの ANSI 標準に基づいていますか?
mysql - MySQL と PostgreSQL の両方の SQL スクリプトを作成することはできますか?
MySQL または PostgreSQL (それぞれバージョン 5.5 および 9.0) のデフォルト インストールで実行される単一の SQL スクリプトを作成したいと考えています。これは可能ですか?スクリプトの先頭に追加し、標準の ANSI クエリを使用する
ことでほぼ実行できますが、その行は PostgreSQL では有効ではありません。SET SESSION sql_mode='ANSI';
エラーが発生しても PostgreSQL に続行するように指示することはできますが、エラーなしで実行されるスクリプトがあればいいのにと思います。
sql - LEFT (外部) 結合が使用されている場合、結合内のテーブルの順序は重要ですか?
SQLクエリが
FROM 副節の他の順列とまったく同じです。
また
オレンジとキウイの間の明示的な LEFT JOIN がそのまま残っている限り。さまざまなドキュメントで読んだことから、返されるセットはまったく同じである必要があります。
実際のデータベースでのパフォーマンスではなく、クエリの結果のみに関心があります。(私は PostgreSQL 8.3 を使用していますが、これは私の知る限り、結合順序に関するオプティマイザーのヒントをサポートしておらず、最適なクエリ プランを自動的に作成しようとします)。