我正在尝试选择所有与MerchantSequenceKey与不止一个ChainOID和ChainTypeOID为2关联的记录。
SELECT MerchantSequenceKey
FROM hpstChainList cl
JOIN hpstChains c ON cl.ChainOID = c.ChainOID
WHERE c.ChainTypeOID = 2
GROUP BY MerchantSequenceKey
HAVING COUNT(*) > 1
这将返回794条记录,但没有与每个记录相关联的ChainOID。对于我一生,我不知道如何同时返回ChainOID和MerchantSequenceKey。
我想要的样本数据如下所示:
ChainOID MerchantSequenceKey
27528 128742
42862 128742
27528 128745
42862 128745
27528 128748
42862 128748
5488 132767
39248 132767
5522 133218
16033 133218
答案 0 :(得分:2)
您要按商家对数据进行分组以计算链,但还要显示未分组的结果。我不认为您一次可以做到,所以您需要 您可以将所需的MerchantSequenceIDs列表作为子查询,然后在其外部运行基本查询,以仅使用这些商人来获取要显示的数据。
SELECT CL.ChainOID, MerchantSequenceKey
FROM hpstChainList cl
JOIN hpstChains c ON cl.ChainOID = c.ChainOID
WHERE c.ChainTypeOID = 2
AND MerchantSequenceKey in
(
SELECT MerchantSequenceKey
FROM hpstChainList cl
JOIN hpstChains c ON cl.ChainOID = c.ChainOID
WHERE c.ChainTypeOID = 2
GROUP BY MerchantSequenceKey
HAVING COUNT(*) > 1
)
答案 1 :(得分:-1)
您需要在Group by中添加ChainOID
SELECT MerchantSequenceKey,c1.ChainOID
FROM hpstChainList cl
JOIN hpstChains c ON cl.ChainOID = c.ChainOID
WHERE c.ChainTypeOID = 2
GROUP BY MerchantSequenceKey,c1.ChainOID
HAVING COUNT(distinct c1.ChainOID) > 1
答案 2 :(得分:-1)
尝试使用GROUP
的{{1}}
ChainOID
答案 3 :(得分:-1)
我认为您不需要JOIN
。我只是不知道桌子上的东西是什么来的。
所以,这应该起作用:
SELECT cl.MerchantSequenceKey
FROM hpstChainList cl
GROUP BY cl.MerchantSequenceKey
HAVING COUNT(*) > 1 AND
SUM(CASE WHEN cl.ChainTypeOID = 2 THEN 1 ELSE 0 END) > 0