我想创建一个表,该表采用 2 列的不同组合,并且仅返回大于 1 的列。
到目前为止,我创建了一个包含所有公司和与其关联的契约(Contract)的表。
Company Contract
------- --------
ABC 0000111
ABC 0000113
DEF 0000124
GHI 0000207
GHI 0000389
GHI 0000567
它还创建了第二个表,用于查找这些列的不同组合并创建它们出现次数的列表。
Company Countr
------- --------
GHI 3
ABC 2
我正在尝试创建第三个表,该表仅返回那些公司与多个契约(Contract)相匹配的行。
Company Contract
------- --------
ABC 0000111
ABC 0000113
GHI 0000207
GHI 0000389
GHI 0000567
修改源码,如果有帮助的话
SELECT DISTINCT inventory.company, inventory.contracts
FROM inventory
WHERE inventory.company not in ('Company Name')
(
SELECT
DISTINCT inventory.company,
count(DISTINCT(concat(inventory.company, inventory.contracts))) AS Countr
FROM inventory
WHERE
inventory.company not in ('Company Name')
GROUP BY company
HAVING count(DISTINCT(concat(inventory.company, inventory.contracts))) > 1
)
ORDER BY Countr DESC
最佳答案
这样的事情应该有效:
SELECT * FROM inventory WHERE company in
(SELECT company FROM inventory GROUP BY company HAVING count(distinct contract)>1);
子查询只是创建一个公司
列表,这些公司具有多个与其关联的契约(Contract)
。然后选择与这些公司
匹配的所有数据库存
。 HAVING
子句中的 Count
中的 DISTINCT
修饰符可确保存在多个不同的合约
关于sql - 如何创建一个使用多个列中不同值的聚合作为参数的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979821/