VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 816|回复: 5

一次查询多条合并到一条记录的问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-4 10:00:01 | 显示全部楼层 |阅读模式
我有两个表,结构大致如下:

A表

字段        类型         含义
DataValue   float       数据值
DataKind    int         数据种类 范围 0-7  分别代表一组数据的8个数据指标
DataTime    datetime    数据时间


如上所示,每组数据要包含8种数据指标,但是在数据库里为8条记录,能不能通过SQL将A表中的内容合成一条记录,分别赋予它不同的字段名称。
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-17 06:45:01 | 显示全部楼层
用交叉表查询。
回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-17 16:15:01 | 显示全部楼层
搜“行转列”
回复

使用道具 举报

0

主题

40

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-5-18 10:30:01 | 显示全部楼层
case ....when.....then...
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-18 21:15:02 | 显示全部楼层
参考
declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from CJ) as a
select @sql = @sql+' from test group by name'
exec(@sql)
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-5-19 12:45:01 | 显示全部楼层
--這樣?
create table T(id int, type int)
insert T select 1, 1
union all select 1, 2
union all select 1, 3
union all select 2, 3

select id,
'A'=max(case type when 1 then 1 end),
'B'=max(case type when 2 then 2 end),
'C'=max(case type when 3 then 3 end)
from T
group by id

--result
id          A           B           C           
----------- ----------- ----------- -----------
1           1           2           3
2           NULL        NULL        3

(2 row(s) affected)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表