sql - 如何创建一个使用多个列中不同值的聚合作为参数的表?

标签 sql sql-server t-sql

我想创建一个表,该表采用 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 修饰符可确保存在多个不同的合约

Here's a link to the functional schema and query

关于sql - 如何创建一个使用多个列中不同值的聚合作为参数的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979821/

相关文章:

sql - 帮助 TSQL - 一种获取行的第 N 列中的值的方法?

mysql - mysql中如何将行转换为列

c# - MySQL 相当于 MS SQL 代码

c# - 使用 DataTable 插入或更新 SQL 表

sql - 多对多关系 JOIN 的研究

T-SQL 使用条件插入多个链接表,而不使用游标

sql - 在 SQL 中提取字符之后和最终句号(/句点)之前的字符串

PHPExcel:将 Excel 插入 SQL 数据库时单元格坐标 A 无效

sql - 选择 'highest' X 行而不排序

PHP SQL 我想在表的1行中显示2组数据