2016-05-11 18 views
0

エラーが発生しました: 'THEN'に近い条件が想定されるコンテキストで指定された非ブール型の式。ケースステートメントでMinを使用するにはどうすればいいですか

どうすればこの問題を解決できますか?

ここはSQLです。

Select 
HEADER_ID, 
CASE 
    WHEN MIN(OPPTY_HEADER_ID) THEN STATCD='SP66'ELSE STATCD AS STACD, 
TYPE, NL_IND 
FROM nl_dups_load 
+0

あなたは何をしようとしていますか?そして、これはRDBMSの問題ですか? – Strawberry

+0

私はより多くの情報を含めるべきだった。この表は重複したheader_idsの表です。各header_idには、および、oppty_header_idがあります。したがって、各header_idには2つのoppty_header_idがあります。だから私はヘッダーIDごとに分のoppty_header_idを取って、そのstatcdを変更するつもりです。 –

+1

あなたの質問にあなたの質問に情報を含めるように質問してください。 –

答えて

0

CASE WHENステートメントの最初の句に真偽の結果が必要です。以下のようなものに変更

Select HEADER_ID 
    , CASE WHEN MIN(OPPTY_HEADER_ID) > 0 THEN STATCD = 'SP66' ELSE STATCD END AS STACD 
    , TYPE 
    , NL_IND 
FROM nl_dups_load 

ウィル「修正」その特定のエラーが、その結果は、あなたが探しているものではないかもしれません。また、私は、その形式のCASE文で集計関数(つまり、 'MIN')を使用できるとは考えていないので、元のものを修正すると別のエラーが発生する可能性があります。

質問と希望のSQL結果をよりよく説明する必要があります。

EDIT:あなたは(作られた仮定の負荷で)次のような何かをしたいよう

I should have included more info. This table is a table of duplicate header_ids. Each header_id has and oppty_header_id. so there are 2 oppty_header_id to each header_id. so I wan to take the min oppty_header_id per header id and change its statcd.

が鳴ります。 UPDATEクエリを簡単に元に戻すことはできないため、これをテストしてから使用してください。

UPDATE A 
SET A.STATCD = 'SP66' 
FROM nl_dups_load AS A 
INNER JOIN (
    SELECT B.HEADER_ID, MIN(OPPTY_HEADER_ID) AS MinOppty 
    FROM nl_dups_load AS B GROUP BY B.HEADER_ID 
) AS C ON A.HEADER_ID = C.HEADER_ID AND A.OPPTY_HEADER_ID = C.MinOppty 

けれども、私は本当にこれはあなたがしているものであることを確実に知るためにあなたのソーステーブルのいくつかの例の行と結果のテーブルで行った変更で、同じ行の例を参照する必要があるだろう探しています。

関連する問題