-1

我试过这个查询但没有运气:

SELECT tr.transferfrom, tr.transferto, br.id as 'BR_ID',
  tr.refno, br.name as 'BR_NAME', br.code as 'BRANCH_CODE',
  tr.docno, tr.transdate, stk.stockno,stk.salescat,tr.qty,
  tr.sprice,tr.qty*tr.sprice as 'GROSS_SALES' 
FROM TRANSFER tr 
JOIN branch br on tr.branchid=br.id 
JOIN stocks stk on tr.stockid=stk.id 
WHERE (tr.docno = 'ST00576' AND br.id IN ('*')) 
OR RIGHT(tr.refno,7) = 'ST00576' AND LEFT(tr.refno,3) IN ('*')

br.id如果是空白值,我想查询以选择所有记录。

4

1 回答 1

1

有一个获取所有分支 id 的子查询,然后IN查询可以引用子查询的输出.. 子查询会像select br.id from branch br

因此整个查询将如下所示:

SELECT 
  tr.transferfrom, 
  tr.transferto, 
  br.id as 'BR_ID',
  tr.refno,
  br.name as 'BR_NAME', 
  br.code as 'BRANCH_CODE', 
  tr.docno,
  tr.transdate, 
  stk.stockno,
  stk.salescat,
  tr.qty,
  tr.sprice,
  tr.qty*tr.sprice as 'GROSS_SALES' 
FROM TRANSFER tr 
  JOIN branch br 
    on tr.branchid=br.id 
  JOIN stocks stk 
    on tr.stockid=stk.id
WHERE (
  tr.docno = 'ST00576' 
  AND br.id IN (select br.id from branch br)
  ) 
  OR RIGHT(tr.refno,7) = 'ST00576' 
  AND LEFT(tr.refno,3) IN ( select br.id from branch br)
于 2012-06-29T03:25:46.937 回答