我一直困扰着这些论坛,总是在寻找关于Joins和Sub_queries的提示,并且已经有了库存解决方案,但是我一直在遇到一些看起来很简单的东西,但它让我望而却步。
过去几天搜索此论坛并没有得出答案。
所以,这里是:
我有一个表格,其中包含 ID 键,一个人的名称,以及一个名为状态
的字段我需要使用通常的别名将此表连接到自身并简单地显示行。
因此,我可以获得“约会”的正确计数或“失败”的正确计数,但我的JOINS不能将它们全部放在一起,以便它看起来完整,如下图所示:
id |名字|约会(来自状态值)|失败(来自状态值)
36 |布拉德琼斯| 78 | 37
45 |雪莉阿特沃特| 56 | 44
47 |杰克布里尔| 33 | 60
53 | Norm Johnson | 17 | 26
我可以获得一列id, 其中一个名字, 一个来自状态值,即具有'约会'AS#约会的约会的计数 或者我可以获取状态列的行数,其中状态为“无兴趣” 但我无法得到加入
我使用这样的查询和许多变体来获得4列中的3列但是当我超越尝试连接时我迷失了方式....所以我在这里备份并显示一个可用于查询的查询得到约会的数量或通过改变状态值可以获得失败的数量....
SELECT trainerid,trainername,COUNT(*)AS约会
来自trainer_appointments
GROUP BY状态,trainingid
HAVING status ='Appointment'
按任命顺序DESC
在此表中,每个'name'都有一个密钥ID号 所以布拉德琼斯将永远是身份36
我正在计算用他的身份证号码标记的行数满足“预约”值的状态条件,并在另一列中将“无兴趣”的状态值计为失败
我也尝试过 - 像“约会”一样具有状态
状态LIKE'约会'或
有状态='约会'
当我进一步使用此查询并尝试在自己的别名下加入此表以获取FAILS COUNT WHERE“Status LIKE'No Interest'”GROUP BY id,Join flops。
JOINS因各种错误原因而失败,或者查询产生了错误的计数。
我已经尝试将我在此论坛上看到的许多其他联接调整为这个简单的问题,但即使查询在技术上执行,我也无法获得正确的值。
如果你们中的一位专业人士会告诉我这是多么容易,我会很激动!
答案 0 :(得分:0)
我出去了,猜你不需要加入,你只想要计算几种不同状态的名字。您需要条件聚合。
select name,
count(case when status = 'Appointment' then 1 end) appointments,
count(case when status = 'Fail' then 1 end) fails
from <yourtable>
group by name
只需修改case语句中的条件,即可调整正在计算的值。