Ult*_*tic 4 sql t-sql sql-server
我有这个SQL查询:
select prefix, code, stat, complete, COUNT(*) as Count
from table
group by prefix, code, stat, complete
order by prefix, code, stat, complete
Run Code Online (Sandbox Code Playgroud)
列'前缀'是字母数字值(0-9a-zA-z).我想要的是使它如果前缀的值是一个数字,使数字等于0.如果它是一个字母,它将保持其值.我试图在group by子句下面添加以下行:
(case when prefix like '%[0-9]%' then 0 else prefix end)
Run Code Online (Sandbox Code Playgroud)
但是我收到错误"将varchar值'J'转换为数据类型int时转换失败.".
导致此错误的原因是什么?如何让'prefix'列显示0或字母?
case when prefix like '%[0-9]%' then '0' else prefix end
Run Code Online (Sandbox Code Playgroud)
你显然也需要这个作为表达式GROUP BY:
select
NewPrefix = case when prefix like '%[0-9]%' then '0' else prefix end,
code,
stat,
complete,
COUNT(*) as Count
from table
group by
case when prefix like '%[0-9]%' then '0' else prefix end,
code, stat, complete
order by
case when prefix like '%[0-9]%' then '0' else prefix end,
code, stat, complete
Run Code Online (Sandbox Code Playgroud)