2016-02-24 38 views
0

問題:我在T-SQL中有一個查詢,我有ROW_NUMBER作爲RowNumber set和Partitioned在我的SELECT中名爲UnitNumber的列上。我想創建一個CASE聲明說:RowNumber Case Statement顯示無效列

CASE WHEN RowNumber = 1 then un.SqFt Else '' End as GrpSqft

不過,我收到一個錯誤,我ROWNUMBER列是無效的。我是否把這個放在錯誤的位置?我是Sql的新手,並且無法理解如何將列定義爲「內置」列。我得到:

[列名'RowNumber'無效。 ]

所需的結果是有一欄 「GrpSqft」 與陷入ROWNUMBER所有平方英尺值= 1

謝謝

+0

您需要使用子查詢或CTE。您不能在定義它的'SELECT'的同一級別的'WHERE'子句中引用列別名。 –

回答

1

需要被

CASE  
    WHEN ROW_NUMBER() OVER (PARTITION BY UnitNumber ORDER BY BLAH DESC) = 1 THEN un.sqft ELSE '' 
END AS GrpSqft 
+0

這是行得通的,但現在在將Varchar轉換爲Decimal時現在給我一個錯誤。我認爲這是錯誤的unitnumber(varchar)被轉換成十進制(sqft)。 – Geo

+1

@Geo可能必須將'un.sqft'作爲字符串或將'ELSE'''更改爲數字'0.0'或'NULL' – SQLChao

+0

謝謝@SQLChao !!! – Geo