SQL:使用table_1中存储的值根据table_2中列出的变量填充table_2中的列

时间:2012-12-24 01:04:02

标签: sql database sqlite

我是sql的新手,在学校上课但是非常基础。我有2个表,我想以某种方式链接在一起,但不知道从哪里开始。我有一个月份表,列出了该月的员工和已完成的服务电话。每个员工的每次通话和通话类型的报酬都不同。所以我有一个佣金表,列出每个员工,服务电话的类型,列中的数据是每个员工为每种不同类型的电话拨打的美元金额。我想链接每个表中的员工ID,以便我可以做这样的事情......

SELECT sum(TypeOfCall) as "Total Commission" 
from December
where TypeOfCall='abc' and EmployeeID='John';

MothTable列中TypeOfCall中存储的数据是一个变量,如“abc”或“cdf”,每个变量都列在其中并给出一个值委员会表。如何使用TypeOfCall中列出的值在MonthTable中获取CommissionsTable列的总和?

实际的表,列和类型如下:

CREATE TABLE "December" (
    "EmployeeID" INTEGER NOT NULL,
    "InvoiceType" VARCHAR (6),
    "DR" VARCHAR (8),
    "TypeOfCall" VARCHAR (6),
    "CommissionType" VARCHAR (6),
    "Date DD/MM/YY" VARCHAR (10),
    "InvoiceNumber" INTEGER,
    "InvoiceAmount" FLOAT (6),
    "KeyCode" VARCHAR(20)
)

和...

CREATE TABLE "Commissions" (
    "EmployeeID" VARCHAR(25) PRIMARY KEY  NOT NULL UNIQUE,
    "T3" INTEGER NOT NULL,
    "T5" INTEGER NOT NULL,
    "T7" INTEGER NOT NULL,
    "7B" INTEGER NOT NULL,
    "Other10" INTEGER NOT NULL,
    "Other12" INTEGER NOT NULL,
    "Other13" INTEGER NOT NULL,
    "Other14" INTEGER NOT NULL,
    "Other15" INTEGER NOT NULL
)

2 个答案:

答案 0 :(得分:0)

您真正需要的是SUM(CommissionsTable.value)(替换正确的列名称)与月份表和INNER JOIN之间的CommissionsTable

SELECT
  December.TypeOfCall,
  SUM(CommissionsTable.value) AS "Total Commission"
FROM
  December
  /* Substitute the correct column name for ComissionsTable.TypeOfCall */
  INNER JOIN CommissionsTable WHERE December.TypeOfCall = CommissionsTable.TypeOfCall
WHERE
  December.TypeOfCall = 'abc' 
  AND EmployeeID = 'John'
/* GROUP BY needed if you were retrieving more than just 'abc' */
GROUP BY December.TypeOfCall

然而,适合于每个月都有一个单独的表。相反,列出调用的表格应包含每个调用的日期值及其类型和EmployeeID。类似的东西:

CREATE TABLE calls (
  EmployeeID VARCHAR(32) NOT NULL,
  TypeOfCall CHAR(3) NOT NULL,
  CallDate INTEGER NOT NULL
)

答案 1 :(得分:0)

调用表存储记录只需要一个或多个表依赖于记录的数量和数据保存期限,如果acount非常非常大,分区或mutiplue表是不错的选择。 在12月创建索引.TypeOfCall可以调整性能。