2016-12-05 93 views
0

子查詢無效列名我有了一個子查詢給我Categories列下面的查詢。當我嘗試添加WHERE子句時,出現Invalid column name 'Categories'錯誤。SQL服務器:使用XML

SELECT 
    l.LID, 
    Company, 
    Doors, 
    City, 
    Region, 
    Country, 
    Categories = STUFF((
      SELECT 
       CONVERT(varchar(100), Junc_CatID) + ', ' 
      FROM BND_ListingJunction_testing j 
      WHERE j.Junc_LID = l.LID 
      FOR XML PATH('')), 1, 2, '') 
FROM BND_Listing_testing l 
--FILTERS 
WHERE 
    (Categories = '[querystring:filter-Category]' or '[querystring:filter-Category]'='All') 
GROUP BY 
    LID, 
    Company, 
    Doors, 
    City, 
    Region, 
    Country 
+1

可能的複製[參考別名(在SELECT計算)WHERE子句](http://stackoverflow.com/questions/11182339/reference-alias-calculated-in- select-in-where-clause) – ps2goat

+0

btw,我想你錯過了'OR Categories = ....' –

+1

你可以將你當前的語句嵌套在另一個語句中,然後用上面計算出的列值過濾外部語句。 'Select * from(/ * original select * /)x where x.Categories =/* original filters ... * /' – ps2goat

回答

1

如果剛剛創建,則不能使用創建的列。

例如,這是錯誤的,因爲稅收是不存在

SELECT 
    id, 
    sales, 
    sales * tax as taxes 
FROM sales 
WHERE 
    taxes > 100 

所以你需要我們的子查詢或重複的代碼。

SELECT * 
FROM (SELECT id, sales, sales * tax as taxes FROM sales) T 
WHERE 
    T.taxes > 100 

OR

SELECT 
    id, 
    sales, sales * tax as taxes 
FROM sales 
WHERE 
    sales * tax > 100 
+1

@DanielCorzo,gracias hermano。 –