SQL数据库两个表的组合查询问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:36:43
表1:USER 属性有 number , name , address
表2:DATA 属性有 number , month , dosage
其中,表1是用户档案;表2是用户的各月数据(每户每月一行),但一年12个月,有的用户只有8,9个月有数据。
现在要列出结果表3:属性列要是:number,name, month1,month2,month3......。month12.
求助怎么弄啊。
number 是编号 char型
name 是名字 char型
address 地址 char型号
month和dosage 是数据int型

分两步来算。
第一步:先把表2的数据由横表转为竖表,name 这个字段先空着,第二步来匹配。有的用户只有8,9个月有数据,对于这种情况,可以将没有的数据写为0.比如说a用户没有12月的数据,那么对应的month12字段数据为0,有的则对应成 dosage 。代码为:
insert into 表3(number,month1,month2,month3......month12)
select number,
sum(case when month = 1 then dosage else 0 end) month1,
sum(case when month = 2 then dosage else 0 end) month2,
........
sum(case when month = 12 then dosage else 0 end) month12
group by number
注意:month = 1 这个要根据你表2中的字段类型来写,比如month的数据是‘一月份’,则要写成month='一月份'。1到12 同理。
第二步:匹配
update 表3 a
set a.name = b.name
from 表1 b
where a.number=b.number

dosage是数字形式的吗?
如果不是, 就不太可能,如果是, 我再告诉你, 记得加分。