【问题标题】:Query for Multiple row SQL Where clause查询多行 SQL Where 子句
【发布时间】:2016-02-02 14:34:24
【问题描述】:

一个查询需要帮助,该查询根据某些条件从多行中获取结果。例如我们有 [Roll no] 和 [subjects] 的表格。同一个 [Roll No] 表可以有多个记录。我的要求是,如果学生只选择“英语”,则结果应返回“E”,如果数学则返回“M”,如果两者都选择“B”。

【问题讨论】:

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

标签: sql join row where multiple-columns


【解决方案1】:

// 我想这就是你想要的。

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

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多