select czy,sum(sfsl),sum(sfje),...............
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网站空间、营销软件、网站建设、义乌网站维护、网站推广。
from
(
select czy=case when czy='董事会成员' then ‘内部职工’end,sfsl,sfje,.....
from 表
) t1
group by czy
你这样做的话 就这两个表是不行的。
本来就是一对多的关系 你强行的要把其变成一对一的关系那是不可能。
如果你是要在程序里实现可以这样:
001,a,10
001,b,10
001,c,10
写到一个DataTable里
然后循环读取行的第二和第三个值
在写到一个字符串里
不知道你为什么设计成这样的结构,假如你的长袖衬衣数和
短袖
衬衣数不能同时0,你可以试试我下面的语句
ORACLE:
select
姓名,性别,部门,wmsys.wm_concat(领号),wmsys.wm_concat(sl)
from
(select
姓名,性别,部门,领号,sum(长袖衬衣数+短袖衬衣数)
as
sl
from
table
group
by
姓名,性别,部门,领号)
group
by
姓名,性别,部门
SQLSERVER
:
select
姓名,性别,部门,group_concat(领号),group_concat(sl)
from
(select
姓名,性别,部门,领号,sum(长袖衬衣数+短袖衬衣数)
as
sl
from
table
group
by
姓名,性别,部门,领号)
group
by
姓名,性别,部门
SQLSERVER本身不可以, 你需要用报表服务或者自己写一个程序来展示数据SQL Server2008 怎么将一列的多行内容合并成一行,其他列不合并。如图:
mssql下
create Table #myfal (ID int,data1 varchar(20),data2 varchar(20))
insert into #myfal values (1,1,'')
insert into #myfal values (1,1.1,'')
insert into #myfal values (1,'',0.3)
insert into #myfal values (2,1,'')
insert into #myfal values (2,'',1.2)
select * from #myfal
select ID,SUM(case when data1 = '' then 0 else Convert(float,data1) end) data1 ,
SUM(case when data2 = '' then 0 else Convert(float,data2) end) data2 from #myfal
group by id
drop table #myfal
首先要实现你这样的结果在SQLSERVER中基本是不可能的,因为这样的展示基本违背了第一范式的原则。
要实现这个唯独通过程序来操作。
或者你可以实现为:
a 11、22、33(‘、’为用户自定义的分隔符)
b 44、55、66