`IF`式の中でユーザー定義変数を使用するにはどうすればよいですか?

ニック

このような私のSQLステートメントのいくつか:

  IF(timediff(a.wo_finish_time,
               IF(a.wo_failure_time <> '0000-00-00 00:00:00',
                  a.wo_failure_time,
                  a.wo_creation_time)) < 0,
      0,
      timediff(a.wo_finish_time,
               IF(a.wo_failure_time <> '0000-00-00 00:00:00',
                  a.wo_failure_time,
                  a.wo_creation_time)))

ご覧のとおり、一部が2回表示されるため、冗長です。だから私はこのようなユーザー定義変数を試しました:

 if(@down_time := timediff(a.wo_finish_time,
                             IF(a.wo_failure_time <> '0000-00-00 00:00:00',
                                a.wo_failure_time,
                                a.wo_creation_time)) < 0,
      0,
      @down_time)

変数スコープの違いが原因かもしれませんが、機能しません。この@down_time変数宣言をSELECTリストに入れることができることは知っていますが、それによって出力列にも追加されます。もっと良い方法があるに違いないと思うので、もっと良いアプローチを見つけたいと思って、この質問を投稿します。

Tim Biegeleisen

次のGREATESTトリックを使用できます

SELECT GREATEST(0, TIMEDIFF(a.wo_finish_time,
                       IF(a.wo_failure_time <> '0000-00-00 00:00:00',
                       a.wo_failure_time,
                       a.wo_creation_time)))
FROM yourTable

動的SQLを必要としない別の回避策は、現在のクエリをラップしてから、次のような正しい値をサブクエリすることです。

SELECT
    CASE WHEN t.col < 0 THEN 0 ELSE t.col END AS col
FROM
(
    SELECT TIMEDIFF(a.wo_finish_time,
           IF(a.wo_failure_time <> '0000-00-00 00:00:00',
              a.wo_failure_time,
              a.wo_creation_time)) AS col
           -- other columns?
    FROM yourTable
) t

すでにそのようなサブクエリを使用していた場合、またはパフォーマンスが重要ではなかった場合は、この2番目のオプションが理にかなっている可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

if-then式をユーザー定義関数に追加するにはどうすればよいですか?

分類Dev

ユーザー定義関数内でLAG()を使用するにはどうすればよいですか?

分類Dev

関数でユーザー定義型を使用するにはどうすればよいですか?

分類Dev

ユーザー定義関数内の配列を削除するにはどうすればよいですか?

分類Dev

IDが変更されるたびにユーザー定義の変数値をゼロに設定するにはどうすればよいですか?

分類Dev

ユーザー定義関数をPythonのユーザー入力として使用するにはどうすればよいですか?

分類Dev

Spark SQLでユーザー定義の集計関数を定義して使用するにはどうすればよいですか?

分類Dev

Windows 7のシステム変数PATHにユーザー定義の環境変数を追加するにはどうすればよいですか?

分類Dev

JMeterのすべてのループ/スレッドのユーザー定義変数を再計算するにはどうすればよいですか?

分類Dev

VSCodeスニペットで、別のユーザー定義変数の値を大文字にするにはどうすればよいですか?

分類Dev

SETを使用してmysqlでLAST_INSERT_IDユーザー定義変数を作成するにはどうすればよいですか?

分類Dev

Javaでユーザー定義の名前で変数を作成するにはどうすればよいですか?

分類Dev

D言語でユーザー定義属性を使用するにはどうすればよいですか?

分類Dev

ユーザーに変数の定義を求めるBashスクリプトを作成するにはどうすればよいですか?

分類Dev

Debianでユーザー定義のタスクを作成するにはどうすればよいですか?

分類Dev

Rのggplotにユーザー定義の凡例を追加するにはどうすればよいですか?

分類Dev

Linuxコマンドでユーザー定義の変数名を使用するにはどうすればよいですか?

分類Dev

ユーザーをどのように定義すればよいですか?

分類Dev

Qtにユーザー定義クラスを使用させるにはどうすればよいですか?

分類Dev

ユーザーにAlexaで変数を設定させるにはどうすればよいですか?

分類Dev

標準型からユーザー定義型への変換を定義するにはどうすればよいですか?

分類Dev

コントローラーのユーザー定義変数をLaravelのブレードに渡すにはどうすればよいですか?

分類Dev

コントローラーのユーザー定義変数をLaravelのブレードに渡すにはどうすればよいですか?

分類Dev

AWS redshiftユーザー定義関数に文字列を渡すにはどうすればよいですか?

分類Dev

ユーザーが定義したパターンに従って変数を比較するにはどうすればよいですか?

分類Dev

ユーザー定義関数を使用するBigQueryビューを作成するにはどうすればよいですか?

分類Dev

gradle.properitesでユーザー環境変数を使用するにはどうすればよいですか

分類Dev

Pythonのユーザー定義関数に「位置のみのパラメーター」を実装するにはどうすればよいですか?

分類Dev

ユーザー定義関数内でAQL関数を使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    if-then式をユーザー定義関数に追加するにはどうすればよいですか?

  2. 2

    ユーザー定義関数内でLAG()を使用するにはどうすればよいですか?

  3. 3

    関数でユーザー定義型を使用するにはどうすればよいですか?

  4. 4

    ユーザー定義関数内の配列を削除するにはどうすればよいですか?

  5. 5

    IDが変更されるたびにユーザー定義の変数値をゼロに設定するにはどうすればよいですか?

  6. 6

    ユーザー定義関数をPythonのユーザー入力として使用するにはどうすればよいですか?

  7. 7

    Spark SQLでユーザー定義の集計関数を定義して使用するにはどうすればよいですか?

  8. 8

    Windows 7のシステム変数PATHにユーザー定義の環境変数を追加するにはどうすればよいですか?

  9. 9

    JMeterのすべてのループ/スレッドのユーザー定義変数を再計算するにはどうすればよいですか?

  10. 10

    VSCodeスニペットで、別のユーザー定義変数の値を大文字にするにはどうすればよいですか?

  11. 11

    SETを使用してmysqlでLAST_INSERT_IDユーザー定義変数を作成するにはどうすればよいですか?

  12. 12

    Javaでユーザー定義の名前で変数を作成するにはどうすればよいですか?

  13. 13

    D言語でユーザー定義属性を使用するにはどうすればよいですか?

  14. 14

    ユーザーに変数の定義を求めるBashスクリプトを作成するにはどうすればよいですか?

  15. 15

    Debianでユーザー定義のタスクを作成するにはどうすればよいですか?

  16. 16

    Rのggplotにユーザー定義の凡例を追加するにはどうすればよいですか?

  17. 17

    Linuxコマンドでユーザー定義の変数名を使用するにはどうすればよいですか?

  18. 18

    ユーザーをどのように定義すればよいですか?

  19. 19

    Qtにユーザー定義クラスを使用させるにはどうすればよいですか?

  20. 20

    ユーザーにAlexaで変数を設定させるにはどうすればよいですか?

  21. 21

    標準型からユーザー定義型への変換を定義するにはどうすればよいですか?

  22. 22

    コントローラーのユーザー定義変数をLaravelのブレードに渡すにはどうすればよいですか?

  23. 23

    コントローラーのユーザー定義変数をLaravelのブレードに渡すにはどうすればよいですか?

  24. 24

    AWS redshiftユーザー定義関数に文字列を渡すにはどうすればよいですか?

  25. 25

    ユーザーが定義したパターンに従って変数を比較するにはどうすればよいですか?

  26. 26

    ユーザー定義関数を使用するBigQueryビューを作成するにはどうすればよいですか?

  27. 27

    gradle.properitesでユーザー環境変数を使用するにはどうすればよいですか

  28. 28

    Pythonのユーザー定義関数に「位置のみのパラメーター」を実装するにはどうすればよいですか?

  29. 29

    ユーザー定義関数内でAQL関数を使用するにはどうすればよいですか?

ホットタグ

アーカイブ