-3

次のクエリでt2.stockは、2つの値(10)があります。IN1の値をとして出力し、0値をとして出力したいOUTCASE問題は、このタイプのクエリで式を使用できないことです。これを行う方法はありますか?

use DB1  
go

declare @SQL varchar(500),

Set @SQL=' select t1.ID,t1.Name,t2.stock 
    from table1 t1 
        inner join table2 t2 on t1.ID = t2.ID'

exec (@SQL)
4

2 に答える 2

5

このタイプのクエリが動的クエリを意味している場合は、おそらく動的クエリについて誤解している可能性がありますCASECASE通常、動的クエリ内で式を使用しても問題はありません。その例は、 @GordonLinoffの回答に示されています。

ただし、絶対に主張する場合、状況に別の方法があります。

use DB1  
go

declare @SQL varchar(500);

Set @SQL=' select t1.ID, t1.Name, v.description as stock
    from table1 t1 
        inner join table2 t2 on t1.ID = t2.ID
        inner join (
           values (1, ''IN''),
                  (0, ''OUT'')
        ) t2 (stock, description) on t2.stock = v.stock
';
exec (@SQL);
于 2013-03-19T14:35:33.360 に答える
0

ただし、動的 ​​SQL でステートメントを使用できます。case

use DB1  
go

declare @SQL varchar(500),

Set @SQL='
select t1.ID, t1.Name, (case when t2.stock = 1 then ''IN'' else ''OUT'' end) as stock
from table1 t1 
     inner join table2 t2 on t1.ID = t2.ID
'

exec (@SQL)
于 2013-03-19T14:07:01.393 に答える