我正在使用課程目錄表,其中提供了課程提供時的目錄代碼和課程代碼。我需要做的是確定何時不再提供課程並將其標記爲存檔課程。比較同一表中的數據 - SQL
CREATE TABLE [dbo].[COURSECATALOG](
[catalog_code] [char](6) NOT NULL,
[course_code] [char](7) NOT NULL,
[title] [char](40) NOT NULL,
[credits] [decimal](7, 4) NULL,
)
insert into coursecatalog
values
('200810', 'BIOL101', 'Biology', '3'),
('200810', 'CHEM201', 'Advanced Chemistry', '3'),
('200810', 'ACCT101', 'Beginning Accounting', '3'),
('201012', 'ACCT101', 'Beginning Accounting', '3'),
('201214', 'ACCT101', 'Beginning Accounting', '3'),
('201214', 'ENGL101', 'English Composition', '3'),
('201416', 'PSYC101', 'Psychology', '3'),
('201618', 'PSYC101', 'Psychology', '3'),
('201618', 'BIOL101', 'Biology', '3'),
('201618', 'CHEM201', 'Advanced Chemistry', '3'),
('201618', 'ENGL101', 'English Composition', '3'),
('201618', 'PSYC101', 'Psychology', '3')
在這種情況下,我需要返回ACCT101 - 開始的會計,因爲這是不提供了,應該被視爲歸檔過程。
我迄今爲止代碼:
SELECT
catalog_code, course_code
FROM COURSECATALOG t1
WHERE NOT EXISTS (SELECT 1
FROM COURSECATALOG t2
WHERE t2.catalog_code <> t1.catalog_code
AND t2.course_code = t1.course_code)
order by
course_code, catalog_code
但是,只提供過一次(在一個目錄下)這只是回報的課程。我需要弄清楚我可以如何獲得可能在多個目錄中提供的課程,但不再提供。
任何可以提供的援助表示讚賞!
謝謝!
只是好奇。您如何知道ACCT101來自舊目錄,而不是當前目錄中的新類?看來也許「當前」目錄是catalog_code的最大值?更規範的結構將使這更容易。添加一個目錄表會使這個模糊不清。我真的希望這些教授會用更好的例子來表達他們給學生的東西。 –
我正在基於目錄代碼。例如,201618是一個涵蓋2016 - 2018年的目錄。我不確定這個目錄是否真的很重要,因爲我需要任何不再提供的課程? – RAR
沒錯。但是我問你如何知道目錄是什麼。並指出這裏的數據含糊不清。如果你不需要知道什麼是當前目錄(或最近的),你無法知道什麼課程是新的,什麼課程已經退役。 –