検索

ホームページ  >  に質問  >  本文

最初のゼロ以外の値のみを表示する方法はありますが、すべての値がゼロの場合は、結合されたテーブルとは別のテーブルの列の最初のインスタンスを表示します

2 つのテーブルは非常に大きく、select ステートメントには取得できる値よりも多くの値がありますが、質問に答えるためにこのデータとクエリを単純化できると思います。

これは私の選択ステートメントです:

リーリー

つまり、テーブルが 2 つあります。 Invoice テーブルと InvoiceItem テーブル。これらは各テーブルの InvoiceNum 列によって結合され、InvoiceNum 列と Layer 列が表示されます

このクエリの結果は次のとおりです:

リーリー

私の InvoiceItem テーブルには 1 つの InvoiceNum に割り当てることができる複数の行があるため、結果に InvoiceNum が重複して表示されますが、これは望ましくありません。

これは、請求書テーブルから請求書番号を 1 つだけリストするために取得しようとしている結果です。最初のケースは、InvoiceItem テーブルのレイヤー列のゼロ以外の値であり、非ゼロの場合は、ゼロ値、リスト 最初のゼロ。

次のようなことを試してください:

リーリー

これをどのように行うか、あるいは 2 つの異なるテーブルにあることを考えるとそれが可能かどうかはわかりません。

P粉563831052P粉563831052283日前364

全員に返信(2)返信します

  • P粉310931198

    P粉3109311982024-02-22 12:26:01

    仮定/理解:

    • sybase とマークされていますが、この質問では 4 種類の Sybase RDBMS 製品 (ASESQLAnywhereIQ) を区別していません。 、利点)、したがって、一般的なSQL構文にこだわります(つまり、4x製品には異なるSQL言語があります。また、ASEはCTEをサポートしていません)
    • 提供された出力は、InvoiceItem ## に「欠落している」行があることを示しているようには見えないため、OP の left (outer) join の使用法がわかりません。
    • #Layer 列と InvoiceItemNum 列がどのテーブルに属しているかが明確ではないため、InvoiceItem に属していると仮定します。
    最小限のテーブル定義と関連する

    insert ステートメントのセットを推測します: リーリー

    OP の現在の出力を生成するクエリ:

    リーリー

    OP に必要な出力を生成するためのいくつかの (複雑で混乱を招く) アイデア:

    リーリー

    これらの両方で次のものが生成されます:

    リーリー

    コメント:

      (私には) 出力が表示されず、OP が
    • left (外部) join の必要性を示しているため、出力がどうなるかわかりません。
    • すべてのクエリは (Sybase)SAP でテストされています
    • ASE 16.0
    • 返事
      0
  • P粉551084295

    P粉5510842952024-02-22 10:50:28

    この質問は少し難しいです:

    Postgres で試してみる:

    リーリー ######デモ######

    MySQL 8: ###これを試して:### リーリー

    返事
    0
  • キャンセル返事