SQL查询联合
我有这个疑问SQL查询联合,sql,Sql,我有这个疑问 SELECT e.ename, SUM(md.prices) AS TotalSales FROM Employee2 e inner join MakesD2 md on md.eid=e.eid GROUP BY e.ename UNION ALL SELECT e.ename FROM Employee2 e left join MakesD2 md on md.eid=e.eid WHERE md.eid is NULL; 但我一直在犯这个错误。有什么办法可以解决吗?一个
SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e inner join MakesD2 md on md.eid=e.eid
GROUP BY e.ename
UNION ALL
SELECT e.ename
FROM Employee2 e left join MakesD2 md on md.eid=e.eid
WHERE md.eid is NULL;
但我一直在犯这个错误。有什么办法可以解决吗?一个联合必须对所有子查询具有相同的列。因此,添加第二列:
SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e inner join MakesD2 md on md.eid=e.eid
GROUP BY e.ename
UNION ALL
SELECT e.ename, NULL
FROM Employee2 e left join MakesD2 md on md.eid=e.eid
WHERE md.eid is NULL;
您的查询可能不需要全部联合。这可能是您想要的:
SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e left join
MakesD2 md
on md.eid = e.eid
GROUP BY e.ename;
但是,这更接近原始名称,因为名称可以在查询中多次出现:
SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e left join
MakesD2 md
on md.eid = e.eid
GROUP BY e.ename, (CASE WHEN md.eid IS NULL THEN 1 ELSE 2 END);
此版本仅包含一次名称,即使给定名称的Employee2中有多行与MakesD2不匹配
列数显示在相应的SELECT语句中
必须平等。
列将显示在每个选择项的相应位置
语句必须具有相同的数据类型,或者至少具有可转换的数据
类型
你可以像下面这样做
SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e inner join MakesD2 md on md.eid=e.eid
GROUP BY e.ename
UNION ALL
SELECT e.ename, 0 As TotalSales
FROM Employee2 e left join MakesD2 md on md.eid=e.eid
WHERE md.eid is NULL;
请尝试以下查询:
SELECT e.eid, e.ename, COALESCE(SUM(md.prices), 0) AS TotalSales
FROM Employee2 e
LEFT JOIN MakesD2 md
ON md.eid = e.eid
GROUP BY e.eid, e.ename
ORDER BY e.ename, e.eid
我一直认为这个错误是完全没有意义的,除非你也包括这个错误是什么。它就在你面前的屏幕上,但我们坐在那里看不到它。你要求我们免费帮助你解决问题;您至少应该向我们提供您现有的信息,以便我们使用。谢谢。另外,我有两个相同的emp名称,但他们是两个不同的人,具有不同的ID。我如何显示这两个名字。@Natheeshsselvan我将答案改为说明两个同名的人。