㈠ sql一列如何分成多列在视图中显示出来
分隔字符串代码 用','分隔
用下面的函数
create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100)) returns @temp table(F1 varchar(100)) as begin declare @ch as varchar(100) set @SourceSql=@SourceSql+@StrSeprate while(@SourceSql<>'') begin set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1) insert @temp values(@ch) set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'') end return end
㈡ sql 一列如何按条件分成多列
------------------------------------------------------------------------
-- author:jc_liumangtu(【DBA】小七)
-- date: 2010-03-26 09:37:30
-- version:
-- Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
-- Oct 14 2005 00:33:37
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
------------------------------------------------------------------------use test
set nocount on
if object_id('test4','U') is not null
drop table test4
go
create table test4
(item int ,date char(8),type char(2),quty int)
insert into test4
select 1000 , '20100101', 'A' , 100 union all
select 2000 , '20100101' ,'B' , 200 union all
select 1000 , '20100101' ,'C' , 100 union all
select 2000 , '20100101' , 'D' , 100
select * from test4select item ,date
,max(case type when 'A' then quty else 0 end) [typeA]
,max(case type when 'B' then quty else 0 end) [typeB]
,max(case type when 'C' then quty else 0 end) [typeC]
,max(case type when 'D' then quty else 0 end) [typeD]
from test4 group by item,date
item date type quty
----------- -------- ---- -----------
1000 20100101 A 100
2000 20100101 B 200
1000 20100101 C 100
2000 20100101 D 100item date typeA typeB typeC typeD
----------- -------- ----------- ----------- ----------- -----------
1000 20100101 100 0 100 0
2000 20100101 0 200 0 100
㈢ 怎样将SQL查出的字段分成两列解决办法
select
substr(字段名称,1,x),substr(字段名称,x+1)
from
表名;
其中X代表你要截取的该字段要设置为第一列的长度。
例如:
select
substr(empno,1,2)第一列,substr(empno,3)第二列
from
emp;
这样查询出来显示的就把
empno
字段分为了2列。
㈣ sql中将一列按照不同长度分成几列
用CASE WHEN来判断,分解:
selectCASEWHENLen(a.menu_code)=2THENa.menu_codeELSE''ENDASMenu1
,CASEWHENLen(a.menu_code)=4THENa.menu_codeELSE''ENDASMenu2
,CASEWHENLen(a.menu_code)=6THENa.menu_codeELSE''ENDASMenu3
,a.menu_name
,c.role_name,e.user_in_station_mc,e.user_name,e.bm
frommenu_nameasa
leftjoinmenu_userasbonb.menu_code=a.menu_code
leftjoinuser_roleasconc.role_code=b.user_code
leftjoinuser_role_dyasdond.role_code=c.role_code
leftjoinuser_rightaseone.user_code=d.user_code
wheree.user_state='正常'
anda.menu_namelike'%交款%'
㈤ SQL 如何将一列分成若干列
这个..我试试吧..
先重建一个表吧,不过这次把这个列分为5列,然后我们要做的就是把你原来的数据倒过去
建表的语句就不写了,这个表为tb_re,你原来的表为tb_or
insert into tb_re select **** from tb_or b;
****这里是关键,它包含了你要倒进tb_re的列的内容,当然了,select
之后的结果要和tb_re对应,难点应该就是怎么拿那5个列出来
我假设你/分割的都只是个位数
现在:第一列 substr(b.aa,1,1)
2 substr(b.aa,3,1)
3 substr(b.aa,5,1)
4 substr(b.aa,7,1)
5 substr(b.aa,9,1)
不是个位数也行,不过就麻烦多了,其实如果楼主是在oracle中就容易做很多,在sql就难多了
感觉是数据表设计问题,以后不要这样了...
㈥ sql 按行和按列分组
select 省份,sum(case 区域 when '华东' then 1 else 0 end)as '华东',
sum(case 区域 when '华南' then 1 else 0 end)as '华南',
sum(case 区域 when '西南' then 1 else 0 end)as '西南',
sum(case 区域 when '华中' then 1 else 0 end)as '华中',
...
from 表 group by 省份
㈦ sql如何将一张表中的一列数据分为两列显示
目前找到一个办法。
select id,max(money),sum(money)-max(money)
from tt
group by id
㈧ sql查询中,如何将某列 分成 两列。
SELECT PAccM33g02,
CASE PAccM33g02
WHEN 0 THEN PAccM33g02 END PAccM33g02_J,
CASE PAccM33g02
WHEN 1 THEN PAccM33g02 END PAccM33g02_C
FROM PAccM3307
㈨ MSSql查询数值的分布情况
创建一个表WeightLevel,填充数据样例如下,样例中只包含了其中四条数据。
SelectLevelName,Count(Weight)
FromWeightLevel,表A
WhereWeight>=MinScoreAndWeight<=MaxScore
GroupByLevelName
OrderByLevelName
㈩ SQL 中如何分列
我来回答吧,下面代码我测试过,完全运行无误,而且效率非常高。
你先创建一个 sql函数 ,日期格式转换 如:12-01-09 为 09-01-12
然后在更新 数据库。
详细代码如下:
go
create function ConvertDateStr(@str varchar(10))
returns varchar(10)
as
begin
-- 12-01-09
declare @d varchar(2),@m varchar(2),@y varchar(4)
set @d = left(@str,2)
set @str = substring(@str,4,len(@str))
set @m = left(@str,2)
set @str = substring(@str,4,len(@str))
set @y = @str
return @y + '-'+ @m + '-' + @d
end
go
-- select dbo.ConvertDateStr('12-01-09')
update 你的表 set 要转换列 = dbo.ConvertDateStr(要转换列)