我有一个内部连接表的select查询,输出如下:
ID | StudentID | Fullname | Transaction | Date | Place
__ _________ ____________ ______________ ________ _____
1 S-001 Smith,James Dental Checkup 08-21-13 Clinic A
2 S-002 Blake, David Dental Checkup 09-25-13 Clinic C
3 S-002 Blake, David Dental Checkup 10-27-13 Clinic C
4 S-002 Blake, David Dental Checkup 11-27-13 Clinic C
5 S-003 Curtis, An Dental Checkup 08-15-13 Clinic B
6 S-003 Curtis, An Dental Checkup 09-15-13 Clinic B
我希望在Visual Basic 6中的报表上显示的只是一个具有多个事务的学生名称,但所有事务都将显示,如下所示:
ID | StudentID | Fullname | Transaction | Date | Place
__ _________ ____________ ______________ ________ _____
1 S-001 Smith,James Dental Checkup 08-21-13 Clinic A
2 S-002 Blake, David Dental Checkup 09-25-13 Clinic C
3 Dental Checkup 10-27-13 Clinic C
4 Dental Checkup 11-27-13 Clinic C
5 S-003 Curtis, An Dental Checkup 08-15-13 Clinic B
6 Dental Checkup 09-15-13 Clinic B
有可能吗?
答案 0 :(得分:1)
您可以使用row_number()中的分区来实现此目的。 见link。并阅读评论部分。
答案 1 :(得分:0)
您的查询应该是这样的:
Select *
from students s
inner join transactions t on t.StudentID = t.StudentID
inner join
(
select s.StudentID, count(*)
from students s
inner join transactions t on t.StudentID = t.StudentID
group by s.StudentID
having count(*) > 1
) ms on ms.StudentID = s.StudentID
名为“ms”的内部联接仅包括具有多于1个事务的学生,因此会将结果集限制为您想要的结果。然后你如何显示它们是一个不同的问题:没有多少网格能够显示空白而不是列中的重复值,正如你已经使用StudentID和FullName显示的那样,所以你可能需要做额外的工作来获得这种效果,如果它是绝对需要。 (如果不是绝对必要的话,我会尽量避免这样做,因为它会变得混乱!)
干杯 -