我正在尝试创建一个包含 MSSS 2008 中 3 个表之间的联接的表。有一个事实表、一个日期表和一个类(class)表。我应该和他们一起做一张基 table 。日期表中有一个参数,名称为Academic Year Lookup,该参数的值如2000/1、2001/2。基表中的此参数应分为三个参数,例如 CensusYear、StartYear 和 ApplicationYear。因此,我多次需要数据表。我执行了一个内部联接查询,并且已经有四个内部联接语句,但是我获得了一些额外的年数,并且失去了一些年数。我相信,我的查询应该在某个地方是错误的。
附件中包含在 MS Access 中创建的设计 View ,它将有助于查看表格并了解我需要创建的内容。 [Ms Access 中的设计 View ][1]
SELECT
A.[EventCount],
B.[AcademicYearLookup] AS [CensusYear],
C.[AcademicYearLookup] AS [StartYear],
D.[AcademicYearLookup] AS [ApplicationYear],
B.[CurrentWeekComparisonFlag],
B.[AcademicWeekOfYear],
case
when A.[ApplicationCensusSK] = 1 then 'Same Year'
when A.[ApplicationCensusSK] = 2 then 'Next Year'
when A.[ApplicationCensusSK] = 5 then 'Last Year'
ELSE 'Other'
END as [CensusYearDescription],
B.[CurrentAcademicYear],
A.[StudentCodeBK],
A.[ApplicationSequenceNoBK],
A.[CourseSK],
A.[CourseGroupSK],
A.[CourseMoaSK],
A.[CboSK],
A.[CourseTaughtAbroadSK],
A.[ApplicationStatusSK],
A.[ApplicationFeeStatusSK],
A.[DecisionResponseSK],
A.[NationalityCountrySK],
A.[DomicileCountrySK],
A.[TargetRegionSK],
A.[InternationalSponsorSK] INTO dbo.[BaseTable3yrs]
FROM Student.FactApplicationSnapshot A
INNER JOIN Conformed.DimDate AS B ON A.[CensusDateSK] = B.[DateSK]
INNER JOIN Conformed.DimDate AS C ON A.[AcademicYearStartDateSK] = C.[DateSK]
INNER JOIN Conformed.DimDate AS D ON A.[ApplicationDateSK] = D.[DateSK]
INNER JOIN Student.DimCourse ON A.CourseSK = Student.DimCourse.CourseSK
WHERE (((B.CurrentAcademicYear) In (0,-1))
AND ((A.ApplicationCensusSK) In (1,2,5))
AND ((Student.DimCourse.DepartmentShortName)= 'TEACH ED'));
/* the query to check that the result it's correct or not, and I check it by academic week of year, and I found that I am lossing some data, and I have some extra data, means maybe join is wrong*/
select * from [BaseTable3yrs]
where [StudentCodeBK]= '26002423'
AND [ApplicationSequenceNoBK] = '0101'
order by [AcademicWeekOfYear]
最佳答案
当进行这样的递归连接时,很容易获得重复的记录。您可以尝试将符合数据单独收集到table variable中然后加入其中。这也会使您的查询更具可读性。
您还可以在主查询上尝试 SELECT DISTINCT。
关于mysql - 如何在SQL Server中多次使用一张表进行内连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41024382/