我的問題是如何根據 column2 獲取 column1 的資料。
這是我存盤的資料的一個小例子。
create table Student_subject
(
Student varchar(20),
Subject varchar(20)
)
insert into Student_subject
values ('Rohan', 'Maths'),
('Rohan', 'Science'),
('Rohan', 'Language1'),
('RAJ' , 'Maths'),
('RAJ' , 'Science'),
('RAJ' , 'Language1'),
('SAM' , 'Maths'),
('SAM' , 'Language1')
我想得到正在學習所有三個科目(“數學”、“科學”、“語言 1”)的不同行的學生。在這種情況下,結果將是 Rohan 和 Raj。還請提出有關如何實作以下目標的查詢。
如果指定了主題:
- 正在學習 { Maths, Science, Language1 } 的學生名單
- 正在學習{數學,科學}的學生名單
uj5u.com熱心網友回復:
SELECT S.STUDENT
FROM Student_subject S
GROUP BY S.Student
HAVING COUNT(DISTINCT S.Subject)=
(SELECT COUNT (DISTINCT Subject) FROM Student_subject )
uj5u.com熱心網友回復:
您可以為學生計算不同的科目。
Select Student
From Student_subject
Group by Student
Having Count(Distinct [Subject])=3
或者您可以使用 string_agg 函式來獲取目標主題串列。
Select Student
From Student_subject
Group by Student
Having string_agg([Subject],',') Within Group (Order by [Subject])='Language1,Maths,Science'
Order by Student
uj5u.com熱心網友回復:
試試這個,也許它有幫助請考慮,如果你想讓你的查詢具有多個輸入的動態,你可以使用 json 引數
這是 json 輸入的示例
DECLARE @test NVARCHAR(MAX)='["Language1","Maths"]'
SELECT Student--,COUNT(1)
FROM Student_subject
WHERE Subject IN
(
SELECT Value
FROM OPENJSON(@test,'$')
)
GROUP BY Student
HAVING COUNT(1)>=(SELECT COUNT(Value)
FROM OPENJSON(@test,'$'))
uj5u.com熱心網友回復:
從 student_subject 中選擇學生
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328796.html
標籤:sql sql-server 查询语句 关系划分
