在两个不同的列中标识具有两个相同值的记录?
问题描述:
我有一张学生证,major1,major2和minor的表格。我想确定那些为同一专业注册两次的学生的记录。我需要一个函数来选择只有那些像Major1和Major2列中的“FIN”一样的专业人士。我至今:在两个不同的列中标识具有两个相同值的记录?
CREATE VIEW A5T5 AS
SELECT (firstname || ' ' || lastname)"FullName", StudentID AS "StudentID", Major1 as "DoubleDipping"
FROM A5
Group by Major1, Major2 ?????
Having count ?????
ORDER BY Major,LastName,FirstName;
答
我认为你正在做这个难度比它是。如果我正确理解你的问题下面的查询应该给你你在找什么:
SELECT (firstname || ' ' || lastname) AS "FullName",
StudentID AS "StudentID",
Major1 as "DoubleDipping"
FROM A5
WHERE MAJOR1 = MAJOR2
如果你真的需要这是一个函数,通常的方式返回结果集将返回开呼叫者然后将负责关闭的SYS_REFCURSOR
。例如:
DECLARE
csr SYS_REFCURSOR;
strNAME VARCHAR2(2000);
nID A5.STUDENTID%TYPE;
strMAJOR A5.MAJOR1%TYPE;
BEGIN
csr := DOUBLE_DIPPING_STUDENTS;
LOOP
FETCH csr
INTO NAME, ID, MAJOR;
WHEN csr%NOTFOUND THEN EXIT;
DBMS_OUTPUT.PUT_LINE(strNAME || ' ' || nID || ' ' || strMAJOR);
END LOOP;
CLOSE csr;
END;
答
为什么不是那样简单:
SELECT名字,姓氏FROM A5 WHERE Major1 = Major2
OMG感谢你:
上述功能可以从
PL/SQL
块作为被称为!这是我第二周学习sql,对不起,这比我想象的要简单得多。 好的,那么如果我必须在三列(Major1,Major2,Minor)中的至少两列宣布同一个纪律时如何处理这个问题? SELECT(姓名|| '' ||姓氏)AS “全名”, StudentID AS “StudentID”, Major1为 “DoubleDipping” FROM AS WHERE MAJOR1 = MAJOR2 OR MAJOR1 =轻微或MAJOR2 = MINOR 上午我纠正? @ john3136 –请问,作为一个单独的问题。谢谢。 –