1. sql 怎么根据一个字段的值把数据拆分成多条数据
可以这样来查询:
1
2
3
4
5
6
7
8
9
10
<a href="https://www..com/s?wd=select&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs" target="_blank" class="-highlight">select</a> s.a01, s.<a href="https://www..com/s?wd=a02&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs" target="_blank" class="-highlight">a02</a>, 1.000 <a href="https://www..com/s?wd=as&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs"target="_blank" class="-highlight">as</a> a03, s.a04
<a href="https://www..com/s?wd=from&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs" target="_blank" class="-highlight">from</a> table_name s,
(
<a href="https://www..com/s?wd=select&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs" target="_blank" class="-highlight">select</a> 1.000 <a href="https://www..com/s?wd=as&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs" target="_blank" class="-highlight">as</a> val
union
<a href="https://www..com/s?wd=select&tn=44039180_cpr&fenlei=-EUBtkn16zPHbsrjRYrjmLPjcdPHfs" target="_blank" class="-highlight">select</a> 2.000
union
select 3.000
) c
where s.a03 >= c.val
2. sql 将一个字段的数据分列显示
SQL2000不支持开窗函数row_number() ,实现这种效果可以借助存储过程。
CREATE PROCEDURE 存储过程2
AS
set nocount on
/* 创建一个临时表,利用identity 添加一个从1开始的连续标识列 */
/* x字段我设置为变长字符串型,请更改为与原始字段类型相同 */
create table #temp (id int identity,X varchar(50))
/* 将原始表中数据插入临时表 */
insert into #temp(x) select colName from tableName order by colName
/* 输出希望得到列表效果 */
/* 思路:id除4求模数根据结果将X值分别放到字段a,b,c */
/* 用(case id%4 when 1 then id + 3 when 2 then id +2 when 3 then id +1 else id end)将每4条记录标识为一组 */
/* 最后通过求分组最大值得办法得到最终列表 */
select
max(case (case id%4 when 1 then 1 when 2 then 2 when 3 then 3 else 0 end) when 1 then x else null end) as a,
max(case (case id%4 when 1 then 1 when 2 then 2 when 3 then 3 else 0 end) when 2 then x else null end) as b,
max(case (case id%4 when 1 then 1 when 2 then 2 when 3 then 3 else 0 end) when 3 then x else null end) as c,
max(case (case id%4 when 1 then 1 when 2 then 2 when 3 then 3 else 0 end) when 0 then x else null end) as d
from #temp
group by (case id%4 when 1 then id + 3 when 2 then id +2 when 3 then id +1 else id end)
set nocount off
上面代码源自下面存储过程,相对容易理解,但是由于过程里使用多一次操作查询(update)其效率也许会慢一些(但是本人未证实)
CREATE PROCEDURE 存储过程1
AS
set nocount on
create table #temp (id int identity,X nvarchar(50),idd int, flag smallint)
insert into #temp(x) select colName from tableName order by colName
update #temp set flag=case id%4 when 1 then 1 when 2 then 2 when 3 then 3 else 0 end,
idd=case id%4 when 1 then id + 3 when 2 then id +2 when 3 then id +1 else id end
select
max(case flag when 1 then x else null end) as a,
max(case flag when 2 then x else null end) as b,
max(case flag when 3 then x else null end) as c,
max(case flag when 0 then x else null end) as d
from #temp group by idd
set nocount off
3. SQL统计根据同一个字段的不同值,统计其他字段和,分列显示,求高手解答!
selectmonthas'月份',sum(score1)as'score1月小计',sum(score2)as'score2月小计',sum(score3)as'score3月小计'
from表格名称
whereyear=2017
groupbymonth;
4. SQL查同一个字段输出两列
你好,按照你问题是需要按year分组,并且组内按照计算code开头为1的quantity之和以及code开头为2的quantity之和的数据。首先分析,既然需要按照year分组,那么就需要用到group by 那么 就可以写出如下:select year , xx, xx from 表名 group by year如何计算组内code开头为1的quantity之和以及code开头为2的quantity之和的数据,那么需要用到sum,并且分别刷选出code开头为1和code开头为2的数据即可。完整SQL如下:select year, sum (case when quantitiy like '%1' then quantitiy else 0 end as ) as 开头为1的quantity之和为一列, sum (case when quantitiy like '%2' then quantitiy else 0 end as ) as 开头为2的quantity之和为一列 from 表名 group by year
5. SQL语句怎样使查询同一表同一列多条数据分列显示
declare @sql varchar(8000)
set @sql = 'select 编码,名称'
select @sql = @sql+', max(case [项目序号] when '''+cast(项目序号 as varchar)+''' then 数额 else 0 end ) AS [项目序号'+cast(项目序号 as varchar)+']'
from (select distinct 项目序号 from 表名) as a
set @sql = @sql +' from 表名 group by 编码,名称'
select @sql
exec (@sql)
6. sql server里select中将一个字段中的内容分成两个列查出
select FName=left(name,4),sname
=right(name,4) from Table
显示就是
FName SName
mick sorft
7. SQL 同一字段不同内容进行分组显示的
SELECT
姓名
住院号
SUM(case
when
费别=‘西药费’
then
金额
else
0
end
)
as
西药费
SUM(case
when
费别=‘CT费’
then
金额
else
0
end
)
as
CT费
SUM(case
when
费别=‘电诊费’
then
金额
else
0
end
)
as
电诊费
SUM(case
when
费别=‘X光费’
then
金额
else
0
end
)
as
X光费
SUM(case
when
费别=‘
药费’
then
金额
else
0
end
)
as
重要费
from
table
group
by
姓名
住院号
8. SQL根据字段内容进行分列,sql语句怎么写
这种不好弄。。
--
select id,replace(col,'2015-','|2015-') from table_name;
用得到的这个结果,根据|这个分隔符重新导入一个新表,之后就好弄了
9. SQL同一个字段依照条件分列显示
select case when 成绩>=55 then 成绩 else 0 end '大于55',
case when 成绩<55 then 成绩 else 0 end '小于55'
from tab
10. 怎样将SQL查出的字段分成两列解决办法
select substr(字段名称,1,x),substr(字段名称,x+1) from 表名;
其中X代表你要截取的该字段要设置为第一列的长度。
例如:
select substr(empno,1,2)第一列,substr(empno,3)第二列 from emp;
这样查询出来显示的就把 empno 字段分为了2列。