Sql 计算通过联接表返回的不同项数
我有3个表,Sql 计算通过联接表返回的不同项数,sql,sqlite,join,Sql,Sqlite,Join,我有3个表,用户、付款、付款类型 比如: 当加入表格来查询我得到的男人的报酬时 userID userName namePayment info 1 Tom Cash ball 1 Tom Cash book 1 Tom Check book 2 Kate Cash book 通过以下
用户、付款、付款类型
比如:
当加入表格来查询我得到的男人的报酬时
userID userName namePayment info
1 Tom Cash ball
1 Tom Cash book
1 Tom Check book
2 Kate Cash book
通过以下查询
SELECT u.userID ,u.userName, te.namePayment , e.info
FROM User u
INNER JOIN Payment e
ON u.userID = e.idUser
INNER JOIN typePayment te
ON e.idTypePayment = te.typeID
order by u.userID;
但是,我想计算一下向每个人支付的总类型的数量,如:
userID userName namePayment info noCash noCheck noBoth
1 Tom Cash ball 2 1 0
1 Tom Cash book 2 1 0
1 Tom Check book 2 1 0
2 Kate Cash book 1 0 0
怎么做?(请看一看,我正在使用SQLite)为什么您希望一个用户有多行?而且,
noBoth
没有意义
此查询获取每个用户的不同付款类型:
SELECT u.userID, u.userName,
SUM(CASE WHEN te.namePayment = 'Cash' THEN 1 ELSE 0 END) as NumCash,
SUM(CASE WHEN te.namePayment = 'Check' THEN 1 ELSE 0 END) as NumCheck,
SUM(CASE WHEN te.namePayment IN ('Cash', 'Check' ) THEN 1 ELSE 0 END) as NumBoth
FROM User u INNER JOIN
Payment e
ON u.userID = e.idUser INNER JOIN
typePayment te
ON e.idTypePayment = te.typeID
GROUP BY u.userID;
ORDER BY u.userID;
如果您愿意,您可以将其加入到更详细的信息中,以添加每笔付款的列。为什么您希望一个用户有多行?而且,
noBoth
没有意义
此查询获取每个用户的不同付款类型:
SELECT u.userID, u.userName,
SUM(CASE WHEN te.namePayment = 'Cash' THEN 1 ELSE 0 END) as NumCash,
SUM(CASE WHEN te.namePayment = 'Check' THEN 1 ELSE 0 END) as NumCheck,
SUM(CASE WHEN te.namePayment IN ('Cash', 'Check' ) THEN 1 ELSE 0 END) as NumBoth
FROM User u INNER JOIN
Payment e
ON u.userID = e.idUser INNER JOIN
typePayment te
ON e.idTypePayment = te.typeID
GROUP BY u.userID;
ORDER BY u.userID;
如果你真的喜欢,你可以将其加入到更详细的信息中,以添加每笔付款的列。
noBoth
是拥有Cash
和Check
的总和。noBoth是拥有Cash
和Check