0

まあ、値は言うまでもなくnullではありませんVARCHAR(30)が、10進数形式です。ただし、一部のレコードには、一部のフィールドに「NA」が含まれています。「 NA SUM」がSUM. Mysql はすべての計算不可能なフィールドを 0 として扱っています。「NA」を含むフィールドの 0 は誤解を招きます。を行っていGROUP BY TABLE.IDます。

編集:

選択する

和(

X >1 THEN 1 の場合

X<-1 の場合 THEN 2 ELSE 3

終わり

場合

Y >1 の場合 THEN 1

Y <-1 THEN 2 の場合

その他 3

終わり)

AS "列 X+Y";

FROM TableA GROUP BY TableA_ID;

特定のフィールドで X および/または Y = "NA" になることがあります。TableA_ID の X と Y の両方が 17 の場合は 6、またはいずれかが「NA」の場合はその他の数値を取得します。

編集(VARCHARに関する私のコメントを引用):

「値を DEC(5,2) として保存しようとしましたが、Excel の一部のデータのフィールドに NA が含まれています。X DEC(5,2) NULL を設定し、NA を挿入しようとしましたが、エラーが発生し続けました ( null にすることはできません。また、デフォルト値を「NA」にしようとしましたが、それでもエラーが発生します (null にすることはできません)。編集としてサンプル クエリを追加します。

4

2 に答える 2

1

わかった。を使用して別の WHERE 句を追加しました

WHERE ..... AND(Colx IS NOT NULL OR Coly IS NOT NULL OR ......);

値を DEC(3,1) に戻し、フィールド値が NULL の場合、デフォルトでnullを使用してフィールドを NULL 可能にしました。NULL の使い方を理解する必要がありました。Excel で「NA」を取り出し、それらのフィールド値を空白のままにしました。

于 2013-07-01T15:17:05.963 に答える
0

foo1 が null または NA の場合は、ゼロ (加算の中立値) として合計し、それ以外の場合は値を合計します。

select sum( case when foo1  is null or foo1 = 'NA' then 0 else foo1 end) as sum, foo2
from FooTable group by foo2

また

select sum(foo1) from FooTable
where (foo2 <> 'NA' and foo2 is null) and (foo3 <> 'NA' or foo3 is null )
group by foo4
于 2013-06-28T20:16:00.547 に答える