0

我将尽我所能解释我被要求做的事情。

假设我们拥有对 DataBase A 的开发人员访问权限,其中包含许多表,但我们最关心的是两个表。第一个称为Accounts,第二个称为Campaign。现在,在 Campaign 表中,我们有很多字段,但最重要的是CampaignTypeIDAccountID

Accounts表中,最重要的字段是AccountIDCustomerNumber。在Accounts表中,我们有许多参与不同活动的客户;因此我们可以说一个客户可以在他们的帐户下拥有许多不同的 CampaignTypeID。

现在这是我被要求做的事情:为每个 CampaignTypeID 显示一个 CustomerNumber(总共 5 种类型)。(我认为重复的 CustomerNumbers 是可以接受的)(例如)

CampaignTypeID  CustomerNumber
1                   34535
2                   23525
3                   23423
4                   52355
5                   23525

这是我使用的查询:

SELECT top 5 CustomerNumber[Customer Number],  CampaignTypeID , 
 FROM A.Account a
  JOIN A.Campaign c  ON a.AccountID = c.AccountID
  WHERE CampaignTypeID IN (5)
  GROUP BY CustomerNumber, CampaignTypeID 

此查询的结果将类似于:(例如)

CampaignTypeID  CustomerNumber
    5                34535
    5                23525
    5                23423
    5                52355
    5                23525

不完全是我想要的,起初我将所有的 CampaignTypeID 插入到 WHERE 子句中,但这只会返回重复的 CampaignTypeID。(前任。)

CampaignTypeID  CustomerNumber
        3            34535
        3            23525
        4            23423
        5            52355
        5            56678
        3            23525

如您所见,此时我唯一的选择是逐个输入每个 CampaignTypeID。然后我会将其中的每一个复制到电子表格中。我在上面向您展示的只是一个示例,但实际上我需要做的是 40 个不同的 CampaignTypeID。这是一项非常乏味的工作,我知道可以提高很多效率。

如果可能的话,我想知道一种更有效的方法来完成这项任务。

谢谢!

更新:好的,我应该添加一个小东西。CampaignTypeID 不是连续的,它们更像是 5,6,7,8,9,10,50,65,110,250,1104,1114。这会让事情变得复杂吗?

架构

CREATE TABLE Accounts 
    (
     AccountID int auto_increment primary key, 
     CustomerID int(20)NOT NULL
    );

INSERT INTO Accounts
(CustomerID)
VALUES
(24),(22),(35),(256),(1246),(11),(224),(55),(664),(773),(234),(568),(245),(986),(768);



CREATE TABLE Campaign 
    (
     CampaignID int auto_increment primary key, 
     CampaignTypeID int(20) NOT NULL,
     CONSTRAINT fk_AccountID FOREIGN KEY(AccountID)
     REFERENCES Accounts(AccountID) 
    );

INSERT INTO Campaign
(CampaignTypeID)
VALUES
(6),(7),(8),(9),(10),(245),(1140),(1150),(1160),(1170),(1180),(1190),(1240),(1250),(1260);
4

1 回答 1

0
Select
  CampaignTypeID,
  Min(CustomerNumber)
From
  A.Account a
    Inner Join
  A.Campaign c
    On a.AccountID = c.AccountID
Where
  CampaignTypeID Between 1 And 5
Group By
  CampaignTypeID
于 2012-11-16T21:52:30.090 回答