数据库重复项查询

--如果是sqlserver2005以上版本

那就多加个过滤yhmc重复的

sqlserver行转列_sql行转列三种方式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。依次去网上搜索,会得到你要的。