嗨,我对如何执行此查询感到困惑。

我有桌子:

transactiondetails
-> TransactionDetailsID
-> TerminalID
-> SiteID
-> TransactionType
-> Amount

terminals
-> TerminalID
-> TerminalName
-> TerminalType


现在,在表terminal.TerminalType上,值可以为0或1。
在我的交易细节中,我需要找到终端的总数。表中特定SiteID中的TerminalType = 1
transactiondetails,所以我的查询是

SELECT
CASE
WHEN b.TerminalType IN (1) then COUNT(a.TerminalID)
ELSE 0 END AS TotalGenesis, a.SiteID
FROM npos.transactiondetails a
LEFT JOIN npos.terminals b ON a.TerminalID = b.TerminalID
WHERE a.SiteID = 167;


但是,即使我的transactiondetails中的TerminalType = 1,TotalGenesis的结果也为零。

谢谢您的帮助。

最佳答案

使用此查询。代替使用IN,使用equal(=)符号。见下文:

SELECT
      CASE
          WHEN b.TerminalType = 1 THEN COUNT(a.TerminalID)
          ELSE 0
      END AS TotalGenesis,
      a.SiteID
FROM npos.transactiondetails a
LEFT JOIN npos.terminals b ON a.TerminalID = b.TerminalID
WHERE a.SiteID = 167;

10-06 02:35