Sql 带有case列的查询
在查询中,我有这样一列:Sql 带有case列的查询,sql,sql-server,tsql,case,Sql,Sql Server,Tsql,Case,在查询中,我有这样一列: case when X = 1 then case when Y <> 0 then YY else XX end else ZZ end as MyColumn 在另一列中,是否有方法检查上面引用MyColumn的列值,而不是重写case语句 我应该根据MyColumn值为另一列赋值 谢谢不,没有: 复制后续列中的逻辑 在派生表/内联视图中执行初始案例评估: SELECT aa.mycolumn, CASE
case when X = 1 then
case when Y <> 0 then YY else XX end
else ZZ
end as MyColumn
在另一列中,是否有方法检查上面引用MyColumn的列值,而不是重写case语句
我应该根据MyColumn值为另一列赋值
谢谢不,没有: 复制后续列中的逻辑 在派生表/内联视图中执行初始案例评估:
SELECT aa.mycolumn,
CASE
WHEN aa.mycolumn = ? THEN ....
END AS next_mycolumn_evaluation
FROM (SELECT CASE
WHEN X = 1 THEN
CASE WHEN Y <> 0 THEN YY
ELSE XX END
ELSE ZZ
END AS mycolumn
FROM ...) aa
如果我理解正确,我可能不理解,假设X、Y、XX、YY和ZZ是此表中的其他列,您可以在此表上创建一个计算列,使用此表达式作为其公式
Alter Table TableName Add NewColumn
as Case when X = 1 then
Case when Y <> 0 YY else XX end
else ZZ end
您可能可以使用子查询来完成。例如:
Select someTable.ID, someTable.A, someTable.B,
case subT.myColumn = 0 then 'BLARG' else 'huh?' end As outerMyColumn
from someTable,
(Select ID, case when X = 1 then
case when Y <> 0 YY else XX end
else ZZ
end as MyColumn
From someTable
where someCondition) subT
where subT.ID = someTable.ID;
你可以这样写
当X=1且Y为0时,则为YY
当X=1且Y=0时,则为XX
其他ZZ结束
以支原体柱结束
这种情况只有一种。不幸的是,我的查询是一个视图,因此我认为我必须复制逻辑。谢谢您的回答。@Opera:SQL Server允许在viewsAh中使用派生表/内联视图,很酷,我会尝试,但很抱歉,我不清楚您的代码。顺便说一下,我会用谷歌搜索内联视图,非常感谢。我知道了,谢谢!关于性能,这两种方法之间有着特殊的区别?@opeara:派生表/内联视图通常被称为子查询,但我不同意这个术语。检查上面的列值是什么意思。你能举个例子吗?