【问题标题】:Is it possible to group by using some matching patterns in SQL Server 2008是否可以在 SQL Server 2008 中使用一些匹配模式进行分组
【发布时间】:2016-08-08 23:01:19
【问题描述】:

是否可以根据匹配模式进行分组?

从这里显示的查询中,我收到一个错误

text、ntext 和 image 数据类型不能进行比较或排序,除非使用 IS NULL 或 LIKE 运算符。

查询:

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

我的预期结果是:

abc    2
efg    4.

【问题讨论】:

  • colname 的类型是什么?
  • ntexttextimage 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)varchar(max)varbinary(max)See details here

标签: sql sql-server sql-server-2008


【解决方案1】:

谢谢大家的快速回复。看起来我得到了答案。让我再看看这个:)

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

【讨论】:

  • 这如何回答你的问题??
【解决方案2】:

这个适用于 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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2020-09-11
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多