[英]Cross Apply with Derived Column In SQL with Case Expression
I have very simple query with few computed column like 我有非常简单的查询,很少有计算列
SELECT COL1 , COL2,COL3
COL4 = (COL1-(COL2*.15))
COL5 = (COL3*(COL1*1.5))
FROM TABLE1 AS A
INNER JOIN TABLE2 AS B
ON A.ID = B.ID
Now i am trying to put Case statement on computed column value using cross apply 现在我试图使用交叉应用将Case语句放在计算列值上
CROSS APPLY (
SELECT REMARKS = CASE WHEN COL4> COL1 THEN GOOD ELSE BAD END
but this is giving error . 但这是错误的。
In Output I am expecting all column ie col1,col2,col3,col4,col5,Remarks 在输出中我期待所有列,即col1,col2,col3,col4,col5,备注
Can someone please suggest what is my mistake? 有人可以建议我的错误是什么?
The problem is that CROSS APPLY
cannot access a computed field from the SELECT
clause because it is evaluated first. 问题是CROSS APPLY
无法从SELECT
子句访问计算字段,因为它首先被计算。
One option is to cascade your computed columns using one CROSS APPLY
for each column: 一种选择是使用每个列的一个CROSS APPLY
级联计算列:
SELECT COL1, COL2, COL3,
C.COL4, D.COL5,
E.REMARKS
FROM TABLE1 AS A
INNER JOIN TABLE2 AS B ON A.ID = B.ID
CROSS APPLY (SELECT COL4 = (COL1-(COL2*.15))) AS C
CROSS APPLY (SELECT COL5 = (COL3*(COL1*1.5))) AS D
CROSS APPLY (SELECT REMARKS = CASE WHEN C.COL4 > COL1 THEN 'GOOD' ELSE 'BAD' END) AS E
What about this? 那这个呢?
SELECT *,CASE WHEN COL4 > COL1 THEN 'GOOD' ELSE 'BAD' END AS Remark
FROM (
SELECT COL1 , COL2,COL3
COL4 = (COL1-(COL2*.15))
COL5 = (COL3*(COL1*1.5))
FROM TABLE1 AS A
INNER JOIN TABLE2 AS B ON A.ID = B.ID
)M
Enclose your first script in select statement then do cross apply 将您的第一个脚本包含在select语句中,然后执行交叉应用
SELECT * FROM (SELECT COL1 , COL2,COL3
,COL4 = (COL1-(COL2*.15))
,COL5 = (COL3*(COL1*1.5))
FROM TABLE1 AS A
INNER JOIN TABLE2 AS B
ON A.ID = B.ID )t
CROSS APPLY
(
SELECT CASE WHEN t.COL4 > t.COL1 THEN 'GOOD' ELSE 'BAD' END REMARKS
) t1
Select x.Iss_Carat,x.Rec_Carat,x.REMARKS from Process_Issue_Receive PTR
cross apply( SELECT *, REMARKS = CASE WHEN Rec_Carat> Iss_Carat THEN 'GOOD'
ELSE 'BAD'
END FROM LAB_Issue_Receive LIR where ptr.Lot_Key = LIR.Lot_key)x where x.REMARKS = 'GOOD'
Try This Query with 2 Diff Table 使用2 Diff Table尝试此查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.