2016-10-06 2 views
0

カラム名のメッセージを持つテーブルがあり、このカラムには以下のような固定フォーマットの値が含まれています。セル内のサブ文字列でグループ化する

フォーマット: -

QU FRASELH .CPHBOSK LH/050840 COR MVT 

私は必要なものは事前に

SELECT COUNT(*), ORIGIN_QUEUE 
FROM info 
where TIME_STAMP >='2016-10-05 00:00:00'and TIME_STAMP<= '2016-10-06 00:00:00' 
group by (????) 

おかげで(上記の場合例えばFRASELH)第二のサブストリングにすることで、グループに基づいてメッセージの一切をカウントすることではありません。

+0

サンプルデータと予想される結果を追加します。 – jarlh

+0

実行しているDBMS(Oracle、MySQL、...)を指定する必要があります。また、あなたの場合は「固定フォーマット」とは何ですか?どの値がこの例で修正されていますか?それに応じて、ソリューションが構築されます。 –

+0

@a_horse_with_no_name dbはSQL Serverです。 – user853575

答えて

0

@EmilHolub固定フォーマットは、メッセージ列の各セルの値が同じ形式を持つことを意味します。例えば、1つのセルには4つの値があります(最初の部分文字列には2文字、_space_2と部分文字列には6文字のスペースなどがあります)。この形式はメッセージ列のすべてのセルで固定されています。それを行うのに十分であるべきであることを考えると

SELECT substr(ORIGIN_QUEUE,4,6) COUNT(*), 
FROM info 
where TIME_STAMP >='2016-10-05 00:00:00'and TIME_STAMP<= '2016-10-06 00:00:00' 
group by substr(ORIGIN_QUEUE,4,6) 

それはなりORIGIN_QUEUE文字列で9番目の文字に第四に基づいてグループ自分の価値観。

+0

ありがとう。それは働いた(ちょうどsubstrの代わりに部分文字列でなければならない)。 – user853575

+0

申し訳ありませんが、主にOracleデータベースで作業していますが、コード言語の相違点についてはわかりません。それが助けてくれてうれしい。 –

関連する問題