Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:使用表_1中存储的值根据表_2中列出的变量填充表_2中的列_Sql_Database_Sqlite - Fatal编程技术网

SQL:使用表_1中存储的值根据表_2中列出的变量填充表_2中的列

SQL:使用表_1中存储的值根据表_2中列出的变量填充表_2中的列,sql,database,sqlite,Sql,Database,Sqlite,我对sql非常陌生,在学校上过一节课,但它非常基础。我有两个表,我想以某种方式连接在一起,但不知道从哪里开始。我有一个月表,列出了该月的员工和完成的服务电话。每个员工每次通话和通话类型的薪酬都不同。因此,我有一个佣金表,列出了每个员工、服务呼叫的类型,列中的数据是每个员工为每种不同类型的呼叫支付的金额。我想链接每个表中的员工ID,这样我就可以这样做 SELECT sum(TypeOfCall) as "Total Commission" from December where TypeOfCa

我对sql非常陌生,在学校上过一节课,但它非常基础。我有两个表,我想以某种方式连接在一起,但不知道从哪里开始。我有一个月表,列出了该月的员工和完成的服务电话。每个员工每次通话和通话类型的薪酬都不同。因此,我有一个佣金表,列出了每个员工、服务呼叫的类型,列中的数据是每个员工为每种不同类型的呼叫支付的金额。我想链接每个表中的员工ID,这样我就可以这样做

SELECT sum(TypeOfCall) as "Total Commission" 
from December
where TypeOfCall='abc' and EmployeeID='John';
但是存储在
TypeOfCall
列的
MothTable
中的数据是一个类似于“
abc
”或“
cdf
”的变量,每个变量都会在commissionTable中列出并给出一个值。如何使用
佣金表
中列出的值获取
月表
TypeOfCall
列的总和

实际表、列和类型如下所示:

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
)

您真正需要的是
SUM(CommissionsTable.value)
(替换正确的列名)在月份的表和
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
)

调用表仅在一个或多个表中存储记录取决于记录数和数据保存周期,如果数量非常大,分区或多个表是不错的选择。
在12月创建索引。TypeOfCall可能会调整性能。

对于实际的ServiceCall表,Month表是一个糟糕的名称选择…您能给我们两个表以及它们各自的列和类型吗?