Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询多行SQL Where子句_Sql_Join_Row_Where_Multiple Columns - Fatal编程技术网

查询多行SQL Where子句

查询多行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

需要一个查询的帮助,该查询基于某些条件从多行获取结果。例如,我们有一张有[卷号]和[主题]的桌子。对于同一个[卷号],表可以有多条记录。我的要求是,如果学生只选择“英语”,那么结果应该返回“E”,如果数学,那么返回“M”,如果两者都选择,那么返回“B”。

//我想这就是你想要的

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

你试过什么?这是一个具有条件逻辑的非常基本的聚合查询。添加示例表数据和预期结果。