SQl T-Sql案例陈述

时间:2014-12-17 10:44:48

标签: sql-server tsql

我有一张名为'OJDT'的桌子。该表中有一列名为“TransType”。该列中有不同交易类型的代码。在每种交易类型上,还有不同的表。目标是我从'OJDT'获取'TransType',并根据'TransType'转到相应的表格并从该表中获取'DocNum'和'Comments'。 'OJDT'和每个'TransType'可以通过'TransId'加入。一个独特的条件是当'TransType'为30时,然后从'OJDT'获取'DocNum'和'Comments'。为此目的,无需进入外部表来获取这些记录。我在每个trans类型上使用CASE语句并获取记录,但问题是发生错误syaing'subquery返回多个值'。它应该发生,因为我在另一个查询中使用它(这个案例查询作为一个整体)。

select case ojdt.transtype
when 46 then
(select docnum from OVPM    --OVPM is the respective column of code 46
inner join OJDT
on ojdt.transID = ovpm.Transid
)

类似地,我已经使用了所有情况,但是发生了错误&这应该。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

您的查询应如下

select (case 
when ojdt.transtype=46 then
(select docnum from OVPM    --OVPM is the respective column of code 46
inner join OJDT
on ojdt.transID = ovpm.Transid
) else '' end) [Trans Type]

答案 1 :(得分:0)

此查询将为您提供符合transid的所有ovpm语句:

select case when transtype = 46 then ovpm.docnum
            when transtype = 30 then ojdt.docnum
       end as docnum
  from ojdt
  left outer join 
       ovpm
    on ojdt.transid = ovpm.transid
   and ojdt.transtype = 46