sqlserver行转列_sql行转列三种方式
数据库重复项查询
--如果是sqlserver2005以上版本那就多加个过滤yhmc重复的
sqlserver行转列_sql行转列三种方式
sqlserver行转列_sql行转列三种方式
select yhmc,sum(xfe) from t_xiaoshou group by yhmc,yhid,splb
明确告诉你..一条Select搞不定.而且这个问题有点复杂.
你可以
可以
select yhmc,sum(xfe) from t_xiaoshou group by yhid wher聚合函数(value_column)e splb=a
select yhmc,sum(xfe) from t_xiaoshou group by yhid where splb=b
把商品类别分类取消.
sql语句查询
如果再不行,我可以给你sample。种你看下 sqlserver pivot /unpivot 函数 一个行转列,一个列转行
select distinct c.[user_name] as user_name,
(select score from test_cj where [name] = c.[name] and course= '数学' )as 数学,
(select score from test_cj where [name] = c.[name] and course= '英语' )as 英语
from test_cj c
第二种
select [user_name] as user_name,
sum(case when course='语文' then score end) as 语文,
sum(case when course='数学' then score end) as 数学,
sum(case when course='英语' then score end) as 英语
from test_cj group by [user_name]
select UserName,
max(case when Course='语文' then Score else 0 end) as '语文',
max(case when Course='数学' then Score else 0 end) as '数学',
max(case when Course='英语' then Score else 0 end) as '英语'
from test_cj
group by UserName
select from test_cj
pivot (max(Score) for Course in (语文,数学,英语)) t
SQL的分时间段统计的SQL语句。
max(case when km='英语' then cj end) as '英语'没看懂a和b二个表的用途,设对表a统计。
直接统计比较困难,不过你可以先把日期转换成到最早日期的分钟数,把分钟数除以10求整,得到的新值就是每10分钟一组的了。不过新值需要保存到临时表,再对临时表分组统计。
--按上述分析将a表中的f_time转换为以最早日期为起点的每10分钟一个值的新列,如间隔8分钟,新列值为0,18分钟,新值为1.此列命名为ten,把它们到临时表#tj中。
select floor(datediff(mi,(select min(f_time) from a),optime)/10) ten,f_time,f_val from a into #tj where not a is null order by f_time
--对#tj按ten列分组统计,同时显示每组的起始日期好截止日期。
select ten,min(f_time) bg,max(f_time) end,sum(f_val) hj_val from #tj group by ten order by ten
--把临时表删go掉
drop table #tj
高分高分高分----数据库的查询问题 急急急------
(case when SourseID = '2' then Score else 0 end ) 数学,是sqlserver2005吗?可以直接这样:
select from 表明 pivot ([工资]) for [月份] in([2009-4-1],[2009-4-2],[2009-4-3],[2009-4-4],[2009-4-6])) as pvt
select 工资 from 表 where name = ‘张三’
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 月份 when ''' + 月份 + ''' then 工资 else 0 end) max(case when km='语文' then cj end) as '语文',[' + 月份 + ']'
from (select distinct 月份 from tablename) as a
set @sql = @sql + ' from tablename group by 姓名'
exec(@sql)
你这个语句写出来很长哦,我把一、二、三、四日的写出来,剩下的相信你能按照格式添加:
SELECT 姓名,
CASE DAY(日期) WHEN 1 THEN 工资 ELSE 0 END,
CASE DAY(日期) WHEN 2 THEN 工资 ELSE 0 END,
CASE DAY(日期) WHEN 3 THEN 工资 ELSE 0 END,
CASE DAY(日期) WHEN 4 THEN 工资 ELSE 0 END
FROM 表名
就是行列转换嘛,很简单。HI我下,我还有个问题需要问你。。
这个直接用SQL查出来困难比较大吧。
可以考虑全查出来以后,在程序里面再按姓名,和日期进行处理
select 工资 from 表 where 时间 like 2009-4% and name = ‘张三’
MSsql行转列求解,在两张表中
name1 name1-2;创建测试表及数据
create table INVMB
运select DISTINCT user_name ,语文字段,数学字段,英语字段 from 表名行
select a.mb001,isnull(b.mb064,0) mb064,isnull(c.xq,0) xq,isnull(c.gy,0) gy
你先测试下速度吧
然后这个sqlserver下适用,其他数据库可能要略改些东西
sql语句怎么把列变成行
sum(case when JYXMMC='硅' then JYZ else 0) as 硅,很简单的行转列,用unpivot,给你个例子
create table #temp (id int,name varchar(10),weight decimal(10,2),bos int,hsname varchar(10))
insert into #temp values(1,'有限公司',20.1,7,'废塑料')
select name,cast(weight as varchar(10)) weight,cast(bos as varchar(10)) bos,hsname from #temp where id=1
)select 项目,值 from tb unpivot (值 for 项目 in([name],[weight],bos,hsname))t
--------------------------------------
项目 值
name 有限公司
weight 20.10
bos 7
hsname 废塑料你自己参考测试看看。如没有问题还请采纳。
如果是orac;with tb as (le可以用case或者decode
“Pivot”一定要和“聚合函数”一起使用吗
其实分两个表了,表1用来保存姓名跟他的一些之类的资料,表2就用来记录名字、工资、月份,然后查询某人或全部时就好作了。PIVOT用于将列值旋转为列名(即行转列),在SQL2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列)FOR列in(…))ASP完整语法:table_sourcePIVOT(聚合函数(value_column)FORpivot_columnIN())UNPIVOT用于将列明转为列值(即列转行),在SQL2000可以用UNION来实现完整语法:table_sourceUNPIVOT(value_columnFORpivot_columnIN())注意:PIVOT、UNPIVOT是SQL2005的语法,使用需修改数据库兼容级别在数据库属性->选项->兼容级别改为90具体实例地址我私信发给你
--如果是sqlserver,试试下面语句SQL 中如何实现类似于字典的功能
(select SUM(a.num) from [order] a where a.product='a' and a.ordersid=r.ordersid ) as procduct_a,很显然 行转 列。在sqlserver 中可以实现的。sqlserver 2005以上版本更容易 用unpivot函数
你先把 sheet1 这个表 装换成
sheet1
c1
d1
a1
给你个例子
姓名 语文 数学 物理
---------- ----------- ----------- -----------
张三 74 83 93
可以转成
---------- ---- -----------
李四 语文 74
李四 数学 84
李四 物理 94
张三 语文 74
张三 select from #temp 物理 93
两张表之间查询的sql语句
name1 name1-1;要输出
(select score from test_cj where [name] = c.[name] and course= '语文' )as 语文,name1 name1-1、name1-2;
name2 name2-1;
这种查询是很难达成的
只能这样查
name2 name2-1;
select a.name,b.name
FROM 表1 a INNER JOIN 表2 b ON a.id=b.lid
FROM 表1 a,表2 b INNER JOIN ON a.id=b.id
ORACLE数据库多行数据合并为1行的问题,急用
declare @sql varchar(8000)select CSRQ,QYPH,PCZL,
from tselect yhmc,sum(xfe) from t_xiaoshou group by yhid 如果需要可以类别able_name
group by CSRQ,QYPH,PCZL
;行转列就是这样,枚举值有多少写多少
oracle行转列函数
select xm as '姓名',需要oracle
姓名 课程 分数8i以上的版本,可以实现类似sql
server的返回结果集(就是table)的函数。
需要参考的oracle资料:
索引表,table函数,
pipelined。依次去网上搜索,会得到你要的。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。