参考语句:
select code,
sum(case when play_id=1 then cnt else 0 end ) play_id01,
sum(case when play_id=1 then cnt else 0 end ) play_id02,
sum(case when play_id=1 then cnt else 0 end ) play_id03
form 表
group by code
2. 一个比较复杂的sql问题,5个表联表查询,帮帮小弟
可以的,不过楼主你也给点分吧! 这么多,都不给分不厚道!
selectF.user_id,U.username
(
SELECTCOUNT(1)ASPLCOUNTFROMdiaryD
LEFTJOINdiscussPONP.key_id=D.ID
whered.user_id=F.user_id
)ASPLCOUNT,
(
SELECTCOUNT(1)ASDZCOUNTFROMdiaryD
LEFTJOINpraiseZONZ.praised_id=D.ID
whered.user_id=F.user_id
)ASplCount,
fromfriend_listF
LEFTJOINuser_idAONF.FRIEND_ID=A.user_id
LEFTJOINusernameUONU.user_id=F.user_id
WHEREA.user_id='XXXX'
3. sql语句 5张表关联
select 表2.标题,表3.标题,表4.标题,表5.标题 from 表1 inner join 表2 on 表1.内容id=表2.id
inner join 表3 on 表1.内容id=表3.id inner join 表4 on 表1.内容id=表4.id inner join 表1.内容id=表5.id where 条件
4. sql 一列数据分段统计怎么写
count(case when 分数字段 between 90 and 99 then 1 end) as[90-99分],count(case when 分拍亩散数字段 between 80 and 89 then 1 end) as[80-89分],count(case when 分数字段 between 70 and 79 then 1 end) as[70-79分],count(case when 分数字段<70 then 1 end) as[70分耐戚以下]from 学生分数表袭氏
5. sql 分段查询语句怎么写
什么库? sqlserver access oracle?
access的话 还是在表里多设置一个字段让他自动增减吧!~
sqlserver的话
select identity(int,1,1) rownum,name into #temp from 表
select * from #temp where rownum>10 and rownum<=20
oracle最简单 有rownum可以直接用!~
6. 如何写sql语句5个表jion链接
其毁培如实这是oracle的写法,SQL是没有这种写法的,一般来说,几乎不纤启用right join,都是中山采用left join,上述语句等价于
select * from a
left join b on a.id=b.id
left join c on b.city=c.city
join d on c.city_code=d.city_code
join e on d.area_id=e.area_id
7. SQL查询,将某数据分段
分隔符‘-’的前后字符串字数是不是固定的,如果是固定的使用一楼的答案就行了,如果不是固定的可以写一个分隔函数,在查询的时候调用,
--按指定符号分割字符串,返回分割后指定索引的第几个元素
CREATEfunctionGet_StrArrayStrOfIndex
(
@strnvarchar(4000),--要分割的字符串
@splitvarchar(10),--分隔符号
@indexint--取第几个元素
)
returnsnvarchar(2048)
as
begin
declare@locationint
declare@startint
declare@nextint
declare@seedintset@str=ltrim(rtrim(@str))
set@start=1
set@next=1
set@seed=len(@split)set@location=charindex(@split,@str)
while@location<>0and@index>@next
begin
set@start=@location+@seed
set@location=charindex(@split,@str,@start)
set@next=@next+1
end
if@location=0select@location=len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。returnsubstring(@str,@start,@location-@start)
end
--查询语句
selectdbo.Get_StrArrayStrOfIndex(A,'-',1)asA1,dbo.Get_StrArrayStrOfIndex(A,'-',2)asA2,dbo.Get_StrArrayStrOfIndex(A,'-',3)asA3,Bfromtablename