2017-02-16 5 views
0

データベーステーブルの行に次のようなエントリがあります。文字の前にユニークな値の数を見つける

101 - 1 
101 - 2 
101 - 3 
102 - 1 
102 - 2 
102 - 3 
103 

私は101102-前に数だけ存在しているので、「3」のように、カウント用SELECTクエリの結果を取得する必要があります。

文字の前にdbテーブルの列で一意の値を見つける方法はありますか?

編集:-がなくてもエントリがあります。

+1

は、1つの列の値の多くが付いている行、または複数のです列、または複数の行? – jarlh

+0

エントリはいくつかの行にあります – Kuttoozz

+0

最初に " - "の列ベースを分割し、一時テーブルに出力を格納し、1列に基づいてグループを使用する必要があります。 – Darshak

答えて

2

エントリはいつもあなたが私たちを提供しているフォーマットを持っている場合は、あなただけの位置を見つけるために持っている「を - 」文字、値を分割し、最初のn文字を取得し、

異なる値をカウント

この、SQL Serverのために働くそうでない場合は、使用しているDBMS何を私たちに通知したり、DBMSのものと機能を置き換える自分で

SELECT COUNT(DISTINCT SUBSTRING(val,0,CHARINDEX('-', val))) from YourTable 
+0

ありがとうございました! :)私は 'CHARINDEX'を' INSTR'に置き換えました。 – Kuttoozz

1
create table T1 
(
    id int primary key identity, 
    col1 varchar(20) 
) 

insert into T1 values('101 - 1'),('101 - 2'),('101 - 3'),('102 - 1'),('102 - 2'),('102 - 3') 

select SUBSTRING(col1,0,CHARINDEX(' ',col1)) as 'Value',count(*) as 'Count' from T1 group by SUBSTRING(col1,0,CHARINDEX(' ',col1)) 
+0

あなたの返信ありがとう:) – Kuttoozz

関連する問題