VB.Net SQL 查询 - 我正在尝试连接两列,但我 运行 遇到了问题

VB.Net SQL Query - I am trying to Concatenate two columns however I am running into issues

下面是我正在尝试执行的查询。我得到一个错误

ClassItem is not a column name.

请有人告诉我我在这个查询中哪里出错了。

SELECT 
    *, CONCAT([Cabin], [Item]) AS ClassItem 
FROM 
    FQR_RAW_1 AS ClassItem 
WHERE 
    ClassItem IN ('%JCHML - Child Meal%', '%WCHML - Child Meal%', '%YMC - Beef%', '%YMC - Chicken%', '%YMC - Fish / Shellfish%', '%YMC - Pork%', '%YMC - Regional Taste (Non Veg)%', '%YMC - Regional Taste (Veg)%', '%YMC - Vegetarian%')  
    AND [Origin Region] LIKE 'USA%'

您不能在同一查询中重复使用别名。一种简单的解决方案是使用子查询:

SELECT r.*
FROM (SELECT r.*, CONCAT([Cabin],[Item]) as ClassItem
      FROM FQR_RAW_1 AS r
     ) r
WHERE ClassItem IN ('%JCHML - Child Meal%', '%WCHML - Child Meal%', '%YMC - Beef%', '%YMC - Chicken%', '%YMC - Fish / Shellfish%', '%YMC - Pork%', '%YMC - Regional Taste (Non Veg)%', '%YMC - Regional Taste (Veg)%', '%YMC - Vegetarian%') AND
      [Origin Region] LIKE 'USA%'

您不能在 where 子句中重用 select 子句中定义的列 - 此处为 ClassItem.

另一个问题是您不能将 IN 与通配符 % 一起使用,这似乎是您的意图。您可能正在寻找一系列 OR 条件:

SELECT *, CONCAT([Cabin], [Item]) as ClassItem 
FROM FQR_RAW_1  
WHERE 
    (
           CONCAT([Cabin], [Item]) LIKE '%JCHML - Child Meal%'
        OR CONCAT([Cabin], [Item]) LIKE '%WCHML - Child Meal%'
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Beef%'
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Chicken%'
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Fish / Shellfish%'
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Pork%', 
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Regional Taste (Non Veg)%'
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Regional Taste (Veg)%'
        OR CONCAT([Cabin], [Item]) LIKE '%YMC - Vegetarian%'
    ) 
    AND [Origin Region] LIKE 'USA%'

请注意,我还删除了 table 别名,它实际上在查询中不需要,并且与列别名相同 - 尽管 SQL 支持它,但这有点令人困惑.如果出于某种原因需要为 table 添加别名,请使用另一个别名。