在2005中將你要附加的數(shù)據(jù)庫(kù)的兼容性級(jí)別設(shè)置為80
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)保靖免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
EXEC sp_dbcmptlevel 'database name',80
無法將2000的還原到2005的原因可能是你的數(shù)據(jù)庫(kù)中使用了在2005中被用作系統(tǒng)關(guān)鍵字的列名或表明,所以只要將該數(shù)據(jù)庫(kù)的兼容性級(jí)別設(shè)置為80(2000)就可以在2005上繼續(xù)使用了,但是有部分2005的新特性無法使用,比如轉(zhuǎn)置表結(jié)構(gòu)函數(shù)等等。
前邊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)
這個(gè)一層一層看
reverse(column) 是把字符串轉(zhuǎn)置,就是從后往前寫,例如'123',通過這個(gè)函數(shù)后變成'321'
轉(zhuǎn)置后,根據(jù)您的字符串,只需要找到第一個(gè)橫線的位置,并截取橫線之前的三位并轉(zhuǎn)回來即可。(原來是找最后一個(gè)橫線的位置取橫線后三位)
charindex('-',reverse(column) ),這個(gè)是取得轉(zhuǎn)置之后第一個(gè)橫線的位置
charindex('-',reverse(column)) - 3,往前推三位的位置,因?yàn)殚_頭可能是數(shù)字,也可能事字母,所以不能從第一位開始,而是使用橫線的位置往前推三位。
substring(reverse(column),charindex('-',reverse(column)) - 3,3) 這個(gè)是截取橫線之前三位,即三位數(shù)字,倒序。
reverse(substring(reverse(column),charindex('-',reverse(column)) - 3,3))
這個(gè)是把三位數(shù)字在倒回來
cast(reverse(substring(reverse(column),charindex('-',reverse(column)) - 3,3)) as int)
最后使用cast函數(shù)把倒回來的三位字符串?dāng)?shù)字轉(zhuǎn)成數(shù)字類型
以上的語(yǔ)法是使用SQLSERVER數(shù)據(jù)庫(kù)的語(yǔ)法寫的。charindex, substring都是SQLSERVER的函數(shù)。
另外,還有,看您的字符串,都是最后一個(gè)橫線后邊緊跟著三位數(shù)字,如果是這樣的規(guī)則,這個(gè)語(yǔ)句可以,如果規(guī)則不定,那么這個(gè)語(yǔ)句就不適用了。
看了您上面的補(bǔ)充,這個(gè)是最終的語(yǔ)法:
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 鏈接數(shù)據(jù)庫(kù)使用數(shù)據(jù)透視表完成,SQL有一個(gè)函數(shù)pivot 可以進(jìn)行轉(zhuǎn)置 但是不能實(shí)現(xiàn)你的表頭也轉(zhuǎn)置;
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
你把上面的代碼復(fù)制過去按f5執(zhí)行就可以看到結(jié)果
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
然后再匯總一下
類似于這樣