2017-04-05 18 views
-1

私はカラムがあり、 日付はdd/mm/yyyyフォーマットです。ハードコード列へのSQLクエリのグループ化

Date   Description. Id.  Amt 
01/01/2000.  ABC.  D1.  100 
02/01/2000.  XYZ.  R1  100 
01/01/2000.  PQR.  D1.  100 
01/02/2000.  CDF.  D1.  150 

今、私は私が日付でグループに必要と金額を合計

Date   Description. Id.  Amt 
01/01/2000.  ABC.  D1. 200 
02/01/2000.  XYZ.  R1  100 
01/02/2000.  CDF.  D1. 150 

を表示するために照会する必要があります。しかし、私はまた、私の選択の記述値ABCをハードコードする必要があります。

+0

グループの 'description'をハードコードしていますか?注文とは何でしょうか? '01/01/2000'、' ABC'と 'PQR'の間に、' ABC'をなぜ望んでいますか?アルファベット順ですか?また、 'id'でグループ化したくないのですか?もしそうでなければ、あなたはグループのために異なっている場合、どのidを表示するべきですか? – Utsav

+0

これまでに何を試しましたか? – Aleksej

+0

idではなく日付でグループ化したいそれはABCまたはPQRではありません私は似たような日付を持つときに私自身のハードコードされたテキスト 'X0000'を使用できるはずです。 – MKS

答えて

1

キーワード。だから、それを避けるか、二重引用符でエスケープしてください(別の名前を使用しています)。

0

私はこれがあなたの期待する出力に基づいていると思います。しかし、あなたがハードコードしたいと言っているmin(description)をチェックしたいかもしれません。また、min(id) is assuming that id is same for sameの日付. But if it is different, the you have to decide whichを表示したい。グループサイズが複数行であるときは、記述をハードコーディングする凝集にCASEを使用することができる:

select the_date, 
    id, 
    case 
     when count(*) > 1 
      then 'ABC' 
     else max(description) 
     end as description, 
    sum(amt) as amt 
from your_table 
group by the_date, 
    id 

また、dateとしてthe_dateが予約されているように、私はdateカラムと呼ばれることに注意

select date, 
min(description), --assuming you want it alphabatically. 
min(id), --assuming they are same for a group. If they are different, the dispay alphabatically. 
sum(amt) 
from your_table 
group by date 
関連する問題