【发布时间】:2015-03-10 03:52:25
【问题描述】:
我有 3 张桌子; COMPANY、TRAINING TICKET 和 TEST。
COMPANY表:
COMPANY CODE | COMPANY NAME
192 ABC ENTERPRISE
299 XYZ ENTERPRISE
TRAINING TICKET表:
TICKET ID | COMPANY CODE | START DATE
2900 192 2015-02-02
3939 192 2015-03-03
4399 299 2015-03-02
TEST SESSION表:
TEST CODE | TICKET ID | COMPANY CODE | CERTIFIED
1221 2900 192 YES
2821 3939 192 NULL
3922 4399 299 YES
我需要这样的东西:
C. CODE | COMPANY NAME | 1ST START DATE | TRAINING TICKET TOTAL | CERTIFIED TOTAL
192 ABC ENTERPRISE 2015-02-02 2 1
299 XYZ ENTERPRISE 2015-03-02 1 1
有可能吗?
我的Sql指令是:
Select *, count(TICKET.CCODE) AS TICKET_TOTAL, count(TEST.CODE) AS CERT_TOTAL
from TICKET
Inner Join COMPANY on TICKET.CCODE = COMPANY.CCODE
Inner Join TEST on COMPANY.CCODE = TEST.CCODE
Group by (TICKET.CCODE),(TEST.CCODE)
Order by TICKET_TOTAL DESC
但两个计数始终相等(TICKET_TOTAL 和 CERT_TOTAL 的结果相同)并且总和是错误的 - 结果是 TICKET_TOTAL = 21 和 CERT_TOTAL = 28,但我得到 523 - 对于 TOP 1 公司。
【问题讨论】:
-
普遍接受的做法是展示你迄今为止所做的尝试,表明你已经为这个问题付出了一些努力。
-
@thecoshman 对我来说最大的问题在于第二组总和。我简化了表格,但是公司的第一个总和是 28,第二个总和是 21。我可以毫无问题地完成第一个总和(3 个内部连接 + 1 个组总和)-第二组我得到了一些疯狂的结果,比如 523..并且两个计数始终相等。选择 *, count(TICKET.CCODE) AS TICKET_TOTAL, count(TEST.CODE) AS CERT_TOTAL from TICKET INNER JOIN COMPANY ON TICKET.CCODE = COMPANY.CCODE INNER JOIN TEST ON COMPANY.CCODE = TEST.CCODE Group by (TICKET.CCODE ),(TEST.CCODE) ORDER BY TICKET_TOTAL DESC
标签: session