在boolean为true的情况下获取列值,否则在boolean false的情况下获取列值

死神

我有一个表,其数据类似于以下内容。

我一直在使用一个大表,其中有许多行,它们的标志和键各不相同。我设法将它们归类,以便在标志为true的地方具有最低的标识,在标志为false的地方具有最低的标识。

╔══════════════════╦══════╦═══════╗
║      Email       ║ Flag ║  Key  ║
╠══════════════════╬══════╬═══════╣[email protected]   ║    1 ║ 77731 ║[email protected]   ║    0 ║ 67980 ║[email protected]   ║    1 ║ 64417 ║[email protected]   ║    0 ║ 71733 ║[email protected] ║    1 ║ 95655 ║[email protected]  ║    0 ║ 91016 ║
╚══════════════════╩══════╩═══════╝

现在,对于每个不同的电子邮件,如果存在一个真AND假标志,我想返回Key值。否则,我想返回最小值。

因此,理想情况下,输出将如下所示:

╔══════════════════╦══════╦═══════╗
║      Email       ║ Flag ║  Key  ║
╠══════════════════╬══════╬═══════╣[email protected]   ║    1 ║ 77731 ║[email protected]   ║    1 ║ 64417 ║[email protected] ║    1 ║ 95655 ║[email protected]  ║    0 ║ 91016 ║
╚══════════════════╩══════╩═══════╝

我一直在尝试使用前两个中的case语句进行各种分组,使用子句,但看不到如何进行。

如果确实有帮助,我只需要电子邮件和密钥。

戴维

有很多方法,这里有两种。

方法1

您可以像这样的CTE做到这一点:

WITH data_cte AS (
    SELECT Email, MAX(CAST(Flag AS INT)) AS Flag
    FROM Data
    GROUP BY Email)
SELECT Data.* 
FROM data_cte
JOIN Data 
    ON Data.Email = data_cte.Email
    AND Data.Flag = data_cte.Flag

要取消构造它的CTE部分刚刚得到的MAX标志值每封电子邮件(需要CASTINT,因为你不能MAX在一BIT列)和查询的其余部分加入CTE回到谈判桌来获得相关数据行。

方法2

使用UNION

SELECT *
FROM Data
WHERE Flag = 1

UNION 

SELECT *
FROM Data
WHERE Flag = 0
AND NOT EXISTS(SELECT * 
               FROM Data AS InnerData
               WHERE InnerData.Flag = 1 
               AND InnerData.Email = Data.Email)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在不知道名称的情况下获取第一列的值

来自分类Dev

在Microsoft Excel中,如何在没有额外列的情况下获取vlookup值数组?

来自分类Dev

在给定X值的情况下获取Y值

来自分类Dev

在不使用jQuery的情况下获取JavaScript的输入值?

来自分类Dev

在不使用jQuery的情况下获取JavaScript的输入值?

来自分类Dev

在不使用getelementbyid的情况下获取输入值

来自分类Dev

C#-在默认情况下获取开关值

来自分类Dev

在不单击Selenium的情况下获取onclick值

来自分类Dev

在没有输入的情况下获取表单值

来自分类Dev

在这种情况下如何获取gridview单元的值

来自分类Dev

在某些情况下无法获取表单ID的值

来自分类Dev

如何在选择属性的情况下获取选项的值

来自分类Dev

如何在postgresql的情况下获取新列

来自分类Dev

R可以在A列的值为x的情况下返回B列的值吗?

来自分类Dev

熊猫在不舍入的情况下截断列值

来自分类Dev

仅在列包含值的情况下使用SUBTOTAL

来自分类Dev

如何在不使用PIVOT的情况下以列vs值而不是行的方式获取sql select查询结果

来自分类Dev

在Cassandra中,如何在将列值保留为空的情况下以列名保存数据?

来自分类Dev

如何在不将公式更改为值的情况下隐藏公式输出为 0 的列

来自分类Dev

在“警告C4800:'int':将值强制设置为'true'或'false'”的不同情况下的不同行为

来自分类Dev

在这种情况下,如何获取foreach循环值以外的值?

来自分类Dev

MYSQL:在值不是特定值的情况下获取字段的平均值

来自分类Dev

在没有指定列名的情况下用多个列的先前值填充空值

来自分类Dev

仅在BigQuery中其他列具有特定值的情况下才选择值

来自分类Dev

在最小值相同的情况下随机设置最小值或列

来自分类Dev

在不知道目标类型的情况下使用Expression获取属性值

来自分类Dev

如何在不获取空值到输出数组的情况下拆分字符串

来自分类Dev

如何在没有任何循环语句的情况下获取数组中多个文件的值

来自分类Dev

Groovy-如何在不更新地图的情况下默认获取地图值

Related 相关文章

  1. 1

    在不知道名称的情况下获取第一列的值

  2. 2

    在Microsoft Excel中,如何在没有额外列的情况下获取vlookup值数组?

  3. 3

    在给定X值的情况下获取Y值

  4. 4

    在不使用jQuery的情况下获取JavaScript的输入值?

  5. 5

    在不使用jQuery的情况下获取JavaScript的输入值?

  6. 6

    在不使用getelementbyid的情况下获取输入值

  7. 7

    C#-在默认情况下获取开关值

  8. 8

    在不单击Selenium的情况下获取onclick值

  9. 9

    在没有输入的情况下获取表单值

  10. 10

    在这种情况下如何获取gridview单元的值

  11. 11

    在某些情况下无法获取表单ID的值

  12. 12

    如何在选择属性的情况下获取选项的值

  13. 13

    如何在postgresql的情况下获取新列

  14. 14

    R可以在A列的值为x的情况下返回B列的值吗?

  15. 15

    熊猫在不舍入的情况下截断列值

  16. 16

    仅在列包含值的情况下使用SUBTOTAL

  17. 17

    如何在不使用PIVOT的情况下以列vs值而不是行的方式获取sql select查询结果

  18. 18

    在Cassandra中,如何在将列值保留为空的情况下以列名保存数据?

  19. 19

    如何在不将公式更改为值的情况下隐藏公式输出为 0 的列

  20. 20

    在“警告C4800:'int':将值强制设置为'true'或'false'”的不同情况下的不同行为

  21. 21

    在这种情况下,如何获取foreach循环值以外的值?

  22. 22

    MYSQL:在值不是特定值的情况下获取字段的平均值

  23. 23

    在没有指定列名的情况下用多个列的先前值填充空值

  24. 24

    仅在BigQuery中其他列具有特定值的情况下才选择值

  25. 25

    在最小值相同的情况下随机设置最小值或列

  26. 26

    在不知道目标类型的情况下使用Expression获取属性值

  27. 27

    如何在不获取空值到输出数组的情况下拆分字符串

  28. 28

    如何在没有任何循环语句的情况下获取数组中多个文件的值

  29. 29

    Groovy-如何在不更新地图的情况下默认获取地图值

热门标签

归档