高分求助,SQL查询语句

表Data字段datetime,name,ljll1,ljll22012-04-1809:00:00,对象1,14922380,NULL2012-04-1809:00:0... 表Data 字段datetime,name,ljll1,ljll2

2012-04-18 09:00:00,对象1,14922380,NULL
2012-04-18 09:00:00,对象2,244,28729890
2012-04-18 09:00:00,对象3,3532815.4,2386495.3
2012-04-18 09:00:00,对象4,12861520,7408951
2012-04-18 09:00:00,对象5 ,????,????
2012-04-18 10:00:00,对象1,14922930,NULL
2012-04-18 10:00:00,对象2,244,28730950
2012-04-18 10:00:00,对象3,3532815.4,2386495.3
2012-04-18 10:00:00,对象4,12861909,7408951
2012-04-18 10:00:00,对象5,????,????
2012-04-18 11:00:00,对象1,14923490,NULL
2012-04-18 11:00:00,对象2,244,28731990
2012-04-18 11:00:00,对象3,3532815.4,2386495.3
2012-04-18 11:00:00,对象4,12862421,7408951
2012-04-18 11:00:00,对象5,????,????
-------------------------------------------------------------------
想要的查询结果:
datetima 对象1,ljll1,ljll2,对象2,ljll1,ljll2,对象3,ljll1,ljll2,对象4,ljll1,ljll2,对象5,ljll1,ljll2.
其中ljll1,ljll2是各自时间、对象中的各自数据
表中的对象不定时,会增加如增加,对象678..等
需要的结果:
时间,对象1_ljll1 ,对象1_ljll2,对象2_ljll1,对象2_ljll2,对象3_ljll1,对象3_ljll2,...
如:
2012-04-18 09:00:00,14922380,NULL,244,28729890,3532815.4,2386495.3,...
2012-04-18 10:00:00,14922930,NULL,244,28730950,3532815.4,2386495.3 ...
2012-04-18 11:00:00,14923490,NULL,244,28731990,3532815.4,2386495.3,...

谢谢..
展开
 我来答
fallearth
2012-04-19 · TA获得超过233个赞
知道答主
回答量:168
采纳率:0%
帮助的人:44.2万
展开全部
select datetime ,
max(case name when '对象1' then ljll1 else 0 end) 对象1ljll1,
max(case name when '对象1' then ljll2 else 0 end) 对象1ljll2,
max(case name when '对象2' then ljll1 else 0 end) 对象2ljll1,
max(case name when '对象2' then ljll2 else 0 end) 对象2ljll2,
max(case name when '对象3' then ljll1 else 0 end) 对象3ljll1,
max(case name when '对象3' then ljll2 else 0 end) 对象3ljll2,
max(case name when '对象4' then ljll1 else 0 end) 对象4ljll1,
max(case name when '对象4' then ljll2 else 0 end) 对象4ljll2,
max(case name when '对象5' then ljll1 else 0 end) 对象5ljll1,
max(case name when '对象5' then ljll2 else 0 end) 对象5ljll2
from table
group by datetime

你是要这个吧
追问
现在加入表中记录出现了对象6,这条语句就不太合适了
数据表中对象会不定时,增加对象。能否根据表中的name对象。
动态查询????
追答
用 ”迷人的反派“的回答就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
友万科技
2025-04-08 广告
Stata系列软件全国授权代理——北京友万。北京友万信息科技有限公司,总部设在北京市昌平科技园区,是一家专注于引进国内外软硬件产品的中关村高新技术企业。公司拥有多项自主研发的数据平台,依托自身经验丰富的技术团队资源,为不同领域的客户提供全面... 点击进入详情页
本回答由友万科技提供
迷人的反派丶
2012-04-19 · 超过31用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:96.8万
展开全部
这是别人给我的语句,我改了一下,你试试能不能用
DECLARE @s VARCHAR(8000)
SELECT @s=isnull(@s+',','')+'max(case when name='''+ name +''' then ljll1 end) as ['+name+'_'+'ljll1'+']'
+', max(case when name='''+ name +''' then ljll2 end) as ['+name+'_'+'ljll2'+']'
FROM (SELECT DISTINCT name FROM Data) j
PRINT @s
EXEC ('select datetime,'+@s+' from Data group by datetime')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传说中的鹰王
2012-04-19 · TA获得超过1053个赞
知道小有建树答主
回答量:923
采纳率:87%
帮助的人:602万
展开全部
create function dbo.fun(@data varchar(200))
returns varchar(3000)
as
begin
declare @s varchar(3000)
set @s= ' '
select @s=@s + ',' +stuff(@data,1,20,'')
from tb where left(data,20)=left(@data,20)
return stuff(@s,1,1, ' ')
end
go

select dbo.fun(data) txt from tb group by left(data,20)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bbfd791
2012-04-19 · 超过17用户采纳过TA的回答
知道答主
回答量:166
采纳率:0%
帮助的人:67万
展开全部
行边列
用case when
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式