0

XYZ3列のテーブルがあります:

Environment Servers Databases
Dev         5        10
PROD        25       100
Test        9        10
TOTAL       39       120

andの値に基づいてSERVER MAINTENANCEandという名前のテーブルに別の 2 つの列を追加したい(データがテーブルに追加されるたびに列に自動的に計算された値が含まれるように、おそらくテーブルに計算された列)DATABASE MAINTENANCETOTAL SERVERSTOTAL DATABASES

    • SERVERS の合計が [1 から 30] の場合、SERVER MAINTENANCE 列の値は 1 になります。
    • SERVERS の合計が [30 から 100] の場合、SERVER MAINTENANCE 列の値は 5 になります。
    • DATABASES の合計が [1 から 10] の場合、DATABASE MAINTENANCE 列の値は 1 になります。
    • DATABASES の合計が [30 から 100] の場合、DATABASE MAINTENANCE 列の値は 10 になります。
4

2 に答える 2

1

通常、計算列は正規化されていないとして嫌われます。

ここでは、おそらく次のような別のテーブルに追加データとして簡単に入力できるルールを明確にしています。

maintenance_limits
-------------------
type
min_count
max_count
result_value

次に、情報を入力します。

DATABASE, 30, 100, 10

次に、単純な JOIN クエリを記述して、「計算された」結果を取得するだけです

于 2012-09-07T20:55:13.213 に答える
0

計算できるものを保存しないでください。これを行うクエリを使用するだけです。

SELECT Environment, Servers, Databases,
    CASE
        WHEN Servers BETWEEN 1 AND 30 THEN 1
        WHEN Servers BETWEEN 31 AND 100 THEN 5
        ELSE 0
    END AS 'Server Maintenance',
    CASE
        WHEN Databases BETWEEN 1 AND 10 THEN 1
        WHEN Databases BETWEEN 30 AND 100 THEN 10
        ELSE 0
    END AS 'Server Maintenance',
FROM XYZ

データをどのように処理するかに応じて、に変更ELSEするNULLことをお勧めします。

于 2012-09-07T21:16:12.393 に答える