请问一个SQL语句的写法

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:17:22
表1:
id 时间 手术
1 2008-6-1 阑尾切除
2 2008-6-2 胆囊切除
3 2008-6-3 截肢
表2:
id 手术id 术者
1 1 甲
2 1 乙
3 1 丙
4 2 丙
5 2 甲
6 3 乙

能通过sql得到下面的结果么?(不要用游标之类的,因为要在access里面用)其中每台手术最多有三个术者

时间 手术 术者1 术者2 术者3
2008-6-1 阑尾切除 甲 乙 丙
2008-6-2 胆囊切除 丙 甲
2008-6-3 截肢 乙
谢谢feigames
我一开始没描述清楚,如果表2的数据为
id 手术id 术者
1 1 甲
2 1 乙
3 1 丁
4 2 戊
5 2 更
6 3 丙
也希望结果显示为
时间 手术 术者1 术者2 术者3
2008-6-1 阑尾切除 甲 乙 丁
2008-6-2 胆囊切除 戊 更
2008-6-3 截肢 丙
而不是
时间 手术 术者1 术者2 术者3 术者4 术者5 术者6
2008-6-1 阑尾切除 甲 乙 丁
2008-6-2 胆囊切除 戊 更
2008-6-3 截肢 丙
查询结果想总共就5列,不是出现过几个术者就显示那么多列

先做查询1
SELECT 表1.时间, 表1.手术, 表2.术者
FROM 表1 LEFT JOIN 表2 ON 表1.ID = 表2.手术ID;
然后交叉表查询
TRANSFORM Last(查询1.术者) AS 术者之最后一条记录
SELECT 查询1.手术, Last(查询1.时间) AS 时间
FROM 查询1
GROUP BY 查询1.手术
PIVOT 查询1.术者;
大概就这样吧
这个是改过的,看看是否符合要求。

呵呵,来慢了 PIVOT 在ACCESS中可以用的吗?