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

标签 sql database sqlite

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

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

但是 TypeOfCall 列中 MothTable 中存储的数据是一个变量,如 'abc' 或 'cdf' 每个变量都在 CommissionsTable 中列出并赋予一个值。如何使用 CommissionsTable 中列出的值获取 MonthTableTypeOfCall 列的总和?

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

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) (用 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
)

关于SQL:使用存储在 table_1 中的值根据 table_2 中列出的变量填充 table_2 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016012/

相关文章:

java - HIbernate 查询语言错误

C# SQL 查询阻塞服务器内存

database - ISA关系ER图

iphone - 如何使用 NSMutableArray 中的列名列表在 sqlite3 中创建表

c# - 系统.Data.SQLite.SQLiteException : unable to open database file

sql - 基于另一个查询的值的不同查询的相交或公共(public)值

sql - 加快活跃用户查询

php - 使用codeigniter检查密码是否正确

asp.net - 维护用户的最佳实践是什么? aspnet_Users 或新建用户表

c++ - sqlite3_prepare_v2 为语句返回 null