0

これは私がしていることの単純化されたバージョンですが、何も動作させることができません。このステートメントでは、「ERR」の後にコンマがないとエラーが発生します。コラムを「月」にしたいので、これでうまくいくと思いますが、かなりの問題があります。ご協力いただきありがとうございます!

   選択する
 a.POL_PRI_RSK_ST_CD、a.MASTER_COMPANY_NBR、

場合

a.char046がNULLの場合、「ERR」

a.char046> '010'の場合、'11+'

それ以外の場合、a.char046はPolicy_Yearsとして終了します。

a.Last7Days、a.Last30Days、a.Last90Days

内部結合の報告から

リポジトリb

a.RECORD_ID=b.RECORD_IDで

ここで、a.POL_OGN_EFF_DT> = '2008-11-01'

グループ化

a.POL_PRI_RSK_ST_CD、a.MASTER_COMPANY_NBR、

場合

a.char046がNULLの場合、「ERR」

a.char046> '010'の場合、'11+'

それ以外の場合、a.char046はPolicy_Yearsとして終了します。

a.Last7Days、a.Last30Days、a.Last90Days
4

8 に答える 8

2

カンマなしで試してください...以下の例。

select  
   case 
      when a.month is NULL then 'ERR'
      when a.month > '011' then '12' 
      else a.month 
   end as Month, 
   a.Last7Days 
from ... 
于 2010-02-02T14:58:40.180 に答える
2

注:これは、質問コメントのデバッグセッションの結果です。

エラーのIncorrect syntax near the keyword 'as'.原因as Policy_YearsGROUP BY句内です。句as内での使用は許可されていません。GROUP BY

于 2010-02-02T15:35:56.390 に答える
0
select 
     day, year,
case
   when a.month is NULL then 'ERR'
   when a.month > '011' then '12'
   else a.month end as Month,
 a.Last7Days
于 2010-02-02T15:00:17.430 に答える
0

ケース終了後、「AS」が欠落していると思います。

于 2010-02-02T15:00:27.633 に答える
0

カンマを修正します:

select 
     day, year,
     case
       when a.month is NULL then 'ERR'
       when a.month > '011' then '12'
       else a.month 
     end Month,
     a.Last7Days
from [table]
于 2010-02-02T15:01:45.243 に答える
0

次のように、Dayとの周りに角かっこを入れます。Year

select a.[Day], a.[Year], ...
于 2010-02-02T15:02:42.663 に答える
0

'マルチパート識別子'日'に関する新しいエラーメッセージに対処します。

と列はテーブルにありますdayか?yearクエリのFromの後に何が表示されますか?これで複数のテーブルを結合していますか?クエリ全体を表示してください。

わかりました、年に編集された質問に基づいて、(Group Byでエイリアスを使用することはできません)これを試してください:

select a.POL_PRI_RSK_ST_CD, 
  a.MASTER_COMPANY_NBR,
  case when a.char046 is NULL then 'ERR'
       when a.char046 > '010' then '11+'
       else a.char046 end as Policy_Years,
  a.Last7Days, a.Last30Days, a.Last90Days
from reporting a 
   join Repository b 
      on a.RECORD_ID = b.RECORD_ID
where a.POL_OGN_EFF_DT >= '2008-11-01'
group by a.POL_PRI_RSK_ST_CD, 
   a.MASTER_COMPANY_NBR, 
   case when a.char046 is NULL then 'ERR'
        when a.char046 > '010' then '11+'
        else a.char046 end,
   a.Last7Days, a.Last30Days, a.Last90Days

しかし実際には、そこには集計関数はまったくなく、select内のすべての式でグループ化されているだけなので、必要なのはDistinctキーワードだけであり、groupbyはまったく必要ありません。

select Distinct a.POL_PRI_RSK_ST_CD, 
  a.MASTER_COMPANY_NBR,
  case when a.char046 is NULL then 'ERR'
       when a.char046 > '010' then '11+'
       else a.char046 end as Policy_Years,
  a.Last7Days, a.Last30Days, a.Last90Days
from reporting a 
   join Repository b 
      on a.RECORD_ID = b.RECORD_ID
where a.POL_OGN_EFF_DT >= '2008-11-01'
于 2010-02-02T15:19:53.257 に答える
0

ASでエイリアスを使用することはできませんGROUP BY。式は、エイリアスなしでSELECTの式と一致する必要があります。

于 2010-02-02T15:31:57.703 に答える