2

サンプルテーブル:MyTable1

Col1    |    Col2     |     Col3
   3           10            5
  10           9             40
   1           2             6

出力は次のとおりである必要があります。

NewColumn
    10
    40
     6

ご覧のとおり、各行から最大値を取得する必要があります。

sql selectクエリを使用するだけで可能ですか?

前もって感謝します

4

3 に答える 3

2

MS Access機能を使用する必要がありますIIF()

IIF(condition, valueiftrue, valueiffalse)

condition は、テストする値です。

valueiftrue は、条件が TRUE と評価された場合に返される値です。

valueiffalse は、条件が FALSE と評価された場合に返される値です。

あなたのクエリは

SELECT IIf(C12 > Col3, C12, Col3) as newColumn
FROM
(
    select IIF(Col1 > Col2,  Col1,  Col2) as C12, Col3
    from mytable1
) x
于 2012-05-24T14:09:51.923 に答える
0

動作する例:

表1:

Col - Text
Col1 - Number
Col2 - Number
Col3 - Number
Col4 - Number

データ:

col; col1; col2; col3; col4;
a;      1;    4;    6;    7;
b;      3;   66;   23;  235;
c;     34;  634;   11;   23;

クエリ:

SELECT Col, Max(colx) AS MaxOfColx
FROM 
(
SELECT Col, Col1 AS Colx From Table1 UNION ALL
SELECT Col, Col2 AS Colx From Table1 UNION ALL
SELECT Col, Col3 AS Colx From Table1 UNION ALL
SELECT Col, Col4 AS Colx From Table1
)
group by Col

結果:

Col; MaxOfColx
 a;          7
 b;        235
 c;        634

これは、必要な数の列で機能します。

于 2012-09-10T14:50:00.470 に答える
0

これがMS Accessで機能するかどうか疑問に思います(自分で確認できません、恐れています):

SELECT
  (
    SELECT MAX(Col)
    FROM (
      SELECT Col1 AS Col UNION ALL
      SELECT Col2        UNION ALL
      SELECT Col3
    ) s
  ) AS NewColumn
FROM yourtable

これは、同じベンダーの他のデータベース製品ファミリでも機能するため、たまたま MS Access でもサポートが追加されたのではないかと考えました。

于 2012-05-25T09:12:58.507 に答える