为什么不能在SQL Server的CASE语句列上使用filter我的WHERE子句?

拉雷·怀特

在我的select语句中,有一个CASE WHEN THEN ELSE END AS语句,我无法在WHERE子句中进行过滤。我不明白为什么这会是一个问题,有人可以阐明一下吗?

SELECT        
CASE 
    WHEN m.Country IN ('CANADA', 'UNITED STATES', 'USA', 'MEXICO') THEN 'NA' 
WHEN m.Country IN ('BRAZIL') THEN 'JD2' 
    WHEN m.Country IN ('NZ', 'NEW ZEALAND', 'AUSTRALIA', 'AUSTRALASIA') THEN 'ANZ' 
ELSE 'Unknown' 
    END AS DerivedRegion,
    m.ID,
    m.[Account Name], 
m.[Display Name], 
m.[Last Name], 
m.[First Name]
FROM dbo.Users AS m
WHERE DerivedRegion = 'Unknown'

那里的WHERE子句给我错误:无效的列名'DerivedRegion',为什么?

Quadrell0

WHERE在处理之前SELECT它不知道那时DerviedRegion什么我建议NOT IN在这种情况下使用来排除国家/地区列表。但是,如果您真的想使用CASE,则可以执行以下操作

SELECT *
FROM
(
    SELECT        
        CASE 
            WHEN m.Country IN ('CANADA', 'UNITED STATES', 'USA', 'MEXICO') THEN 'NA' 
            WHEN m.Country IN ('BRAZIL') THEN 'JD2' 
            WHEN m.Country IN ('NZ', 'NEW ZEALAND', 'AUSTRALIA', 'AUSTRALASIA') THEN 'ANZ' 
            ELSE 'Unknown' 
        END AS DerivedRegion,
        m.ID,
        m.[Account Name], 
        m.[Display Name], 
        m.[Last Name], 
        m.[First Name]
    FROM dbo.Users AS m
) AS x
WHERE x.DerivedRegion = 'Unknown'

签出MSDN并向下滚动到SELECT语句的“逻辑处理顺序”,以查看查询的处理顺序。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

为什么我不能在Swift中使用let in协议?

来自分类Dev

为什么不能在SQL Server上查询OFFSET / FETCH查询?

来自分类Dev

为什么我不能在JCreator中使用JavaFX?

来自分类Dev

为什么我不能在类上使用ConditionalAttribute?

来自分类Dev

为什么我不能在crontab中使用大括号?

来自分类Dev

为什么我不能在MS SQL中指定列宽?

来自分类Dev

为什么不能在动态SQL的DDL / SCL语句中使用绑定变量?

来自分类Dev

为什么我的线性渐变不能在Firefox中使用?

来自分类Dev

为什么我不能在pow()函数中使用整数?

来自分类Dev

为什么我不能在MacVim中使用`<和`>?

来自分类Dev

为什么我不能在TRecord中使用Variable?

来自分类Dev

为什么我不能在CSS Variable中使用rgba?

来自分类Dev

为什么我不能在Python中使用“ +”合并字典?

来自分类Dev

为什么我不能在Laravel中使用关系方法?

来自分类Dev

为什么我不能在Postgresql中用“ with”语句捆绑两个sql命令?

来自分类Dev

为什么我不能在blazor中使用JSInterop?

来自分类Dev

为什么我不能在App Component中使用MyContext?

来自分类Dev

为什么%通配符不能在SQL Server中作为变量的内容工作?

来自分类Dev

为什么我不能在WHERE语句中使用变量?

来自分类Dev

为什么我不能在列表中使用匿名函数?

来自分类Dev

为什么我的sql命令在ACCESS中显示正确的结果时不能在asp上运行?

来自分类Dev

PHP:为什么不能在此SQL查询中使用WHERE?

来自分类Dev

SQL Server 2008-为什么我不能在select count(*)中对查询使用WHERE

来自分类Dev

为什么我不能在IF语句中嵌套SUBSTITUTE?

来自分类Dev

为什么在MS SQL Server的Where子句中使用CASE语句

来自分类Dev

为什么不能在 if 语句中使用空指针?

来自分类Dev

为什么我不能在类中放置 switch 语句

来自分类Dev

在 SQL Server 的 WHERE 子句中使用 CASE 语句

来自分类Dev

为什么我不能在 SQL Server 中为 dll 生成非对称密钥?

Related 相关文章

  1. 1

    为什么我不能在Swift中使用let in协议?

  2. 2

    为什么不能在SQL Server上查询OFFSET / FETCH查询?

  3. 3

    为什么我不能在JCreator中使用JavaFX?

  4. 4

    为什么我不能在类上使用ConditionalAttribute?

  5. 5

    为什么我不能在crontab中使用大括号?

  6. 6

    为什么我不能在MS SQL中指定列宽?

  7. 7

    为什么不能在动态SQL的DDL / SCL语句中使用绑定变量?

  8. 8

    为什么我的线性渐变不能在Firefox中使用?

  9. 9

    为什么我不能在pow()函数中使用整数?

  10. 10

    为什么我不能在MacVim中使用`<和`>?

  11. 11

    为什么我不能在TRecord中使用Variable?

  12. 12

    为什么我不能在CSS Variable中使用rgba?

  13. 13

    为什么我不能在Python中使用“ +”合并字典?

  14. 14

    为什么我不能在Laravel中使用关系方法?

  15. 15

    为什么我不能在Postgresql中用“ with”语句捆绑两个sql命令?

  16. 16

    为什么我不能在blazor中使用JSInterop?

  17. 17

    为什么我不能在App Component中使用MyContext?

  18. 18

    为什么%通配符不能在SQL Server中作为变量的内容工作?

  19. 19

    为什么我不能在WHERE语句中使用变量?

  20. 20

    为什么我不能在列表中使用匿名函数?

  21. 21

    为什么我的sql命令在ACCESS中显示正确的结果时不能在asp上运行?

  22. 22

    PHP:为什么不能在此SQL查询中使用WHERE?

  23. 23

    SQL Server 2008-为什么我不能在select count(*)中对查询使用WHERE

  24. 24

    为什么我不能在IF语句中嵌套SUBSTITUTE?

  25. 25

    为什么在MS SQL Server的Where子句中使用CASE语句

  26. 26

    为什么不能在 if 语句中使用空指针?

  27. 27

    为什么我不能在类中放置 switch 语句

  28. 28

    在 SQL Server 的 WHERE 子句中使用 CASE 语句

  29. 29

    为什么我不能在 SQL Server 中为 dll 生成非对称密钥?

热门标签

归档