2016-04-17 10 views
0

一致するパターンに基づいてグループ化することは可能ですか?SQL Server 2008で一致するパターンを使用してグループ化することは可能です

ここに示したクエリから、私は、テキスト、ntext、およびimageデータ型は、比較や並べ替え、使用時にNULLまたはLIKE演算子を除きできないエラーに

を取得しています。

問合せ:

SELECT 
    <colname>,sum(<colname>) 
FROM 
    #TempTable 
GROUP BY 
    CASE 
     WHEN 
      <colname> like '%abc%' then 'abc' 
      <colname> like '%efg%' then 'efg' 
    END 

私の期待される結果は次のとおりです。私は私がこれに多くを見てanswer.letを得たよう

abc 2 
efg 4. 
+0

'colname'の種類は何で動作しますか? –

+0

'ntext'、' text'、および 'image'データ型は、将来のバージョンのSQL Serverでは削除されます。新しい開発作業でこれらのデータ型を使用しないようにし、現在使用しているアプリケーションを変更することを計画します。代わりに 'nvarchar(max)'、 'varchar(max)'、 'varbinary(max)'を使用してください。 [詳細はこちら](http://msdn.microsoft.com/en-us/library/ms187993.aspx) –

答えて

0

は迅速reply.Looksありがとうございました:)

SELECT CAST(<colname> AS NVARCHAR(100)) <colname>, 
     COUNT(CAST(<colname> AS NVARCHAR(100))) AS NumOccurrences 
FROM <tablename> 
GROUP BY CAST(<colname> AS NVARCHAR(100)) 
HAVING COUNT(CAST(<colname> AS NVARCHAR(100))) > 1 

参考:The text, ntext, and image data > types cannot be compared or sorted, except when using IS NULL or LIKE > operator

+1

これはどのようにあなたの質問に答えますか? –

-1

この1つはROLLUP

SELECT coalesce(CAST(<colname> AS NVARCHAR(100)),'GrantTotal') <colname>, 
     COUNT(CAST(<colname> AS NVARCHAR(100))) AS NumOccurrences 
FROM <tablename> 
GROUP BY CAST(<colname> AS NVARCHAR(100)) with ROLLUP 
HAVING COUNT(CAST(<colname> AS NVARCHAR(100))) > 1 
関連する問題