如何创建一个表,该表使用跨多个列的不同值的聚合作为参数?

时间:2016-12-05 17:21:12

标签: sql sql-server tsql

我想创建一个表,它采用2列的不同组合,只返回大于1的那些。

到目前为止,我创建了一个包含所有公司和与之相关的合同的表格。

open()

它还会创建第二个表,找到这些columan的不同组合,并创建一个列表,显示它们出现的次数。

Company  Contract
-------  -------- 
ABC      0000111
ABC      0000113
DEF      0000124
GHI      0000207
GHI      0000389
GHI      0000567

我正在尝试创建第三个表,该表只返回那些公司与多个合同匹配的行。

Company  Countr
-------  -------- 
GHI      3
ABC      2

修改后的来源,如果有帮助

Company  Contract
-------  -------- 
ABC      0000111
ABC      0000113
GHI      0000207
GHI      0000389
GHI      0000567

2 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

SELECT * FROM inventory WHERE company in 
(SELECT company FROM inventory GROUP BY company HAVING count(distinct contract)>1); 

子查询只会创建一个company列表,其中包含多个contractinventory。然后选择与company匹配的所有数据DISTINCTCount子句中HAVING中的using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); timer1.Interval = 2000; timer1.Enabled = true; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); frm_newmessage frm_message = new frm_newmessage(); frm_message.ShowDialog(); timer1.Start(); } } } 修饰符可确保存在多个不同的合同

Here's a link to the functional schema and query

答案 1 :(得分:1)

我不确定是否有必要创建多个表。考虑到你提供的信息,我会按如下方式进行:

创建一个包含公司和合同信息的表格并将其命名为TABLE

Company  Contract
-------  -------- 
ABC      0000111
ABC      0000113
DEF      0000124
GHI      0000207
GHI      0000389
GHI      0000567

然后我会在该表上创建一个视图,如下所示,并将其命名为VIEW1;这些列称为COMPANYCONTRACT_COUNT,例如:

select company, count(contract) from TABLE group by company;

然后我会使用不同的查询创建另一个视图VIEW2:

select distinct TABLE.company, TABLE.contract from TABLE, VIEW1 where TABLE.COMPANY=VIEW1.COMPANY and CONTRACT_COUNT > 1