It is serious matters: is it fault in Sql Query Analyzer?.
I have face strange situation that I have tested following query on Sql Query Analyzer:
insert into PLCommonTotal(CmnTotal)
select
case
when p.NetpurTot > s.NetsalTot then
(
select NetpurTot from PLPurchaseTotal
)
else
(
Select NetsalTot from PLSaleTotal
)
end
from PLPurchaseTotal p
join PLSaleTotal s
on p.companyID=s.companyID
select * from PLCommonTotal
It is working very well no error from Sql Query Analyzer.
Now look at the same query in VS-2005 :
string tot5 = " insert into PLCommonTotal(CmnTotal)" +
" select" +
" case" +
" when p.NetpurTot > s.NetsalTot then" +
" (" +
" select NetpurTot from PLPurchaseTotal" +
" )" +
" else" +
" (" +
" Select NetsalTot from PLSaleTotal" +
" )" +
" end" +
" from PLPurchaseTotal p" +
" join PLSaleTotal s" +
" on p.companyID=s.companyID";
SqlCommand comcmd = new SqlCommand(tot5, con);
comcmd.Transaction = trans;
comcmd.ExecuteNonQuery();
This is throw Sql Error : “ subquery return more than one value. This is not permitted when the subquery follows = != < <= > >= or when the subquery used an expression. The statement has been termited”.
I want to ask the question if it is not permitted than why it is executed from SQL Query analyzer without any error?.
Is there fault of SQL Team?.
As you have written the query this will happen if you have more than one row in either
PLPurchaseTotalorPLSaleTotal. I think that you are not using the same DB in SSMS and in VS-2005.On the other hand i suspect that this is the query you are aiming for.