新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在2005中将你要附加的数据库的兼容性级别设置为80
专注于为中小企业提供成都网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业保靖免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
EXEC sp_dbcmptlevel 'database name',80
无法将2000的还原到2005的原因可能是你的数据库中使用了在2005中被用作系统关键字的列名或表明,所以只要将该数据库的兼容性级别设置为80(2000)就可以在2005上继续使用了,但是有部分2005的新特性无法使用,比如转置表结构函数等等。
前边SELECT照常写
SELECT ...
FROM ...
WHERE ...
ORDER BY cast(reverse(substring(reverse(column),charindex('-',reverse(column) - 3),3) as int)
cast(reverse(substring(reverse(column),charindex('-',reverse(column)) - 3,3)) as int)
这个一层一层看
reverse(column) 是把字符串转置,就是从后往前写,例如'123',通过这个函数后变成'321'
转置后,根据您的字符串,只需要找到第一个横线的位置,并截取横线之前的三位并转回来即可。(原来是找最后一个横线的位置取横线后三位)
charindex('-',reverse(column) ),这个是取得转置之后第一个横线的位置
charindex('-',reverse(column)) - 3,往前推三位的位置,因为开头可能是数字,也可能事字母,所以不能从第一位开始,而是使用横线的位置往前推三位。
substring(reverse(column),charindex('-',reverse(column)) - 3,3) 这个是截取横线之前三位,即三位数字,倒序。
reverse(substring(reverse(column),charindex('-',reverse(column)) - 3,3))
这个是把三位数字在倒回来
cast(reverse(substring(reverse(column),charindex('-',reverse(column)) - 3,3)) as int)
最后使用cast函数把倒回来的三位字符串数字转成数字类型
以上的语法是使用SQLSERVER数据库的语法写的。charindex, substring都是SQLSERVER的函数。
另外,还有,看您的字符串,都是最后一个横线后边紧跟着三位数字,如果是这样的规则,这个语句可以,如果规则不定,那么这个语句就不适用了。
看了您上面的补充,这个是最终的语法:
select *
from app_member
order by cast(reverse(substring(reverse(m_uid),charindex('-',reverse(m_uid)) - 3,3)) as int)
分组之后,使用case when 即可
select ordersid,
sum(case when product=a then num end) product_a,
sum(case when product=b then num end) product_b,
sum(case when product=c then num end) product_c
from order
group by ordersid
这种在SQL里貌似不行的,但是你可以用EXCLE 链接数据库使用数据透视表完成,SQL有一个函数pivot 可以进行转置 但是不能实现你的表头也转置;
create table a(id int,
val varchar(10))
go
insert into a values(10001,'45.4')
insert into a values(10001,'51.81')
insert into a values(10001,'20.52')
insert into a values(10001,'64.11')
insert into a values(10001,'5.036')
go
create function f1(@id int)
returns varchar(1000)
as
begin
declare @a as varchar(1000)
set @a=''
select @a=@a+' '+val from a where id=@id
return substring(@a,2,len(@a))
end
go
select * from a
select distinct id,dbo.f1(id) from a
你把上面的代码复制过去按f5执行就可以看到结果
select id,
case when dict_type='gender' then dict_value en as gender,
case when dict_type='city' then dict_value en as city
from table
然后再汇总一下
类似于这样