查询多行SQL Where子句
需要一个查询的帮助,该查询基于某些条件从多行获取结果。例如,我们有一张有[卷号]和[主题]的桌子。对于同一个[卷号],表可以有多条记录。我的要求是,如果学生只选择“英语”,那么结果应该返回“E”,如果数学,那么返回“M”,如果两者都选择,那么返回“B”。//我想这就是你想要的查询多行SQL Where子句,sql,join,row,where,multiple-columns,Sql,Join,Row,Where,Multiple Columns,需要一个查询的帮助,该查询基于某些条件从多行获取结果。例如,我们有一张有[卷号]和[主题]的桌子。对于同一个[卷号],表可以有多条记录。我的要求是,如果学生只选择“英语”,那么结果应该返回“E”,如果数学,那么返回“M”,如果两者都选择,那么返回“B”。//我想这就是你想要的 INSERT INTO dbo.rolls ( name, subject ) VALUES ( 'Jones', 'English'), ( 'Smith', 'Math'), ('Adams','Englis
INSERT INTO dbo.rolls
( name, subject )
VALUES ( 'Jones', 'English'),
( 'Smith', 'Math'),
('Adams','English'),
('Adams', 'Math')
GO
;WITH CTE AS (
SELECT subquery1.name, 'B' AS code FROM (
SELECT name,COUNT(name) AS cnt
FROM rolls
WHERE subject = 'English' OR subject = 'Math'
GROUP BY name
HAVING COUNT(name) > 1 ) AS subquery1
UNION
SELECT subquery2.name, SUBSTRING(rolls.subject,1,1) AS code FROM (
SELECT name,COUNT(name) AS cnt
FROM rolls
WHERE subject = 'English' OR subject = 'Math'
GROUP BY name
HAVING COUNT(name) = 1 ) AS subquery2
INNER JOIN dbo.rolls
ON rolls.name = subquery2.name
)
SELECT * FROM CTE
你试过什么?这是一个具有条件逻辑的非常基本的聚合查询。添加示例表数据和预期结果。