如果该组在SQL的特定列中包含值,如何散发整个组

弥敦道123

以下是我拥有的三种表格类型的示例

    CREATE TABLE TestCs(
    [DefendantNumber] VARCHAR(60),
    [FileNumber] VARCHAR(60),
    [ReferralDate] datetime,
    [BookedFirstName] VARCHAR(60),
    )

        INSERT INTO TestCs VALUES ('1111','510-1','2019-01-01','Mike')
        INSERT INTO TestCs VALUES ('1111','510-2','2019-01-01','Mike')
        INSERT INTO TestCs VALUES ('2222','510-3','2019-01-02','John')
        INSERT INTO TestCs VALUES ('3333','510-4','2019-01-04','Kelly')
        INSERT INTO TestCs VALUES ('444','510-5','2019-01-04','Lamar')

    CREATE TABLE Testcharge(
    [FileNumber] VARCHAR(60),
    [ChargeDescription] VARCHAR (60)
    )

    INSERT INTO Testcharge VALUES('510-1','Mu')
    INSERT INTO Testcharge VALUES('510-1','St')
    INSERT INTO Testcharge VALUES('510-2','Bu')
    INSERT INTO Testcharge VALUES('510-2','Po')
    INSERT INTO Testcharge VALUES ('510-3','Po')
    INSERT INTO Testcharge VALUES ('510-3','Sp')
    INSERT INTO Testcharge VALUES('510-4','Po')
    INSERT INTO Testcharge VALUES('510-5','Ra')
    INSERT INTO Testcharge VALUES('510-5','Bu')


CREATE TABLE TestEvent(
[FileNumber] VARCHAR(60),
[EventCode] VARCHAR (60)
)

INSERT INTO TestEvent VALUES('510-1','TR')
INSERT INTO TestEvent VALUES('510-1','HRL')
INSERT INTO TestEvent VALUES('510-1','CSCT')
INSERT INTO TestEvent VALUES('510-2','PREL')
INSERT INTO TestEvent VALUES('510-2','CSCT')
INSERT INTO TestEvent VALUES('510-3','GJ')
INSERT INTO TestEvent VALUES('510-3','DIV')
INSERT INTO TestEvent VALUES('510-3','CSCT')
INSERT INTO TestEvent VALUES('510-4','FLW')
INSERT INTO TestEvent VALUES('510-4','CST')
INSERT INTO TestEvent VALUES('510-5','CAP')
INSERT INTO TestEvent VALUES('510-5','CSCT')

我可以使用以下查询链接这些表

SELECT cs.DefendantNumber,
cs.FileNumber,
cs.ReferralDate,
cs.BookedFirstName,
chrg.ChargeDescription,
ev.EventCode,
chrg.ChargeDescription 
FROM TestCs AS cs INNER JOIN Testcharge AS chrg
ON cs.FileNumber=chrg.FileNumber LEFT JOIN TestEvent AS ev 
ON ev.FileNumber=cs.FileNumber
WHERE DefendantNumber IN (SELECT DefendantNumber FROM TestCs GROUP BY DefendantNumber HAVING COUNT(*)=1) 

从上面从上面的查询中获得的表中,我想确保我能够获得那些没有特定费用说明的人的FileNumber。例如,我想确保我得到FileNumber没有特定类型费用的人的。例如,让FileNumber那些没有“ Ra”的人ChargeDescription

我在最后使用了以下查询

AND NOT EXISTS (SELECT 1 FROM TestCs AS cs2 WHERE cs2.FileNumber=cs.FileNumber AND chrg.ChargeDescription='Ra')

但是,它没有按照我的意图进行。例如,我想排除列中FileNumber有a"Ra"的人的ChargeDescription因此,我应该看不到510-5如果FileNumber中包含特定值s组如何排除整个组ChargeDescription

唯一应出现的值是

FileNumber  DefendantNumber
510-3   2222
510-3   2222
510-3   2222
510-3   2222
510-3   2222
510-3   2222
510-4   3333
510-4   3333
肖恩·兰格

您可以为此使用带有NOT EXISTS的相关子查询。

SELECT cs.DefendantNumber,
    cs.FileNumber,
    cs.ReferralDate,
    cs.BookedFirstName,
    chrg.ChargeDescription,
    ev.EventCode,
    chrg.ChargeDescription 
FROM TestCs AS cs 
INNER JOIN Testcharge AS chrg ON cs.FileNumber = chrg.FileNumber 
LEFT JOIN TestEvent AS ev ON ev.FileNumber = cs.FileNumber
WHERE cs.DefendantNumber IN 
    (
        SELECT DefendantNumber 
        FROM TestCs 
        GROUP BY DefendantNumber 
        HAVING COUNT(*) = 1
    )
    AND NOT EXISTS 
    (
        SELECT * 
        FROM Testcharge c 
        WHERE c.FileNumber = cs.FileNumber 
            AND c.ChargeDescription = 'Ra'
    )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在R中使用dplyr,如果另一列包含特定的一组值,则过滤该列

如果一条记录包含某个值,如何排除整个组?

如何基于该组中的行数分配列值

如何检查数据框中的列是否仅包含一组特定值

SQL:选择不包含特定值的组

用于更新特定记录的SQL语句,但是如果该记录在列中包含某个值,则忽略该记录

排除 SQL Teradata 组中特定列值之前的行

仅当该组concat列中存在一个或多个特定值时,如何在MySql中进行组串联

如何编写 SQL 来计算分组后列中值的总出现次数,如果该组具有该值,则将计数视为 1?

如果组在指定列表中,如何根据组的值求和?

如果其他任何列满足某些条件,如何将整个组放入熊猫中?

SQL对一组列等于特定值的组中的行进行计数

如果记录组的多列包含特定文本,如何使用 DAX 检查?

通过分组拆分数据帧,如果另一列中的值对于特定字符串不变,则删除该组

如果一组特定列中的值满足特定条件,则返回整行

从列表或组中删除元素如果它包含特定字符

根据该组中的一行更新该组中的列值

如果列中不包含特定值/文本,则突出显示该列中的单元格

找出该组中的值

如果特定值不在 Pandas 的另一列中存在,则删除多个列组

pandas:如果组的最后一行具有特定的列值,如何删除组的所有行

组中的子集(如果列包含元素列表)

分组并在hive / sql中检查该组的值

如何评估一组行是否包含特定值?

从每个组中减去组的特定值

创建一个列 B,该列将组的总和存储在 A 列中,但仅限于特定值

如何将列添加到包含列值在熊猫中对应的组的名称的 DataFrame

给定该组至少包含一个非NA值,请删除该组中具有NA的行

组 b 时间,如果组包含则返回布尔值