我想尝试执行以下查询:
我有几张桌子:
项目表
RUT | Item_Id | Period | Amount
15897554-4 | 8 | 2022-10 | 50000
18897554-9 | 3 | 2022-10 | 80000雇员表
RUT | Name
15897554-4 | Luis
18897554-9 | Ramon 我想这么做:
RUT Name Item_3_amount Item_8_amount Period
15897554-4 Luis 80000 50000 2022-10
18897554-9 Ramon 0 0 2022-10我试过这样做:
SELECT employees.rut, employees.name, () as Item_3_amount, () as Item_8_amount FROM employees 但是我不知道怎么取这笔钱,你能帮我吗?谢谢
发布于 2022-10-06 14:18:15
在每个特定项目的每个员工的基础上,您似乎想要总计。在本例中,示例数据只显示每个人一行和一个项。如果你对一个人有多个约会会发生什么。你想要他们的合计总数吗?在每天的基础上?还是显示一个从/到时间范围的周期?有太多的选择了,但是我会试着展示我认为你想要的东西。
另外,在将来,请将您的SQL格式设置为可读性与单行长度。在评论中不要像提问一样把答案放进去。编辑你的原始帖子,只需添加到它的正文。
现在,回到选项上。先加入
select
e.rut,
e.name,
case when i.item_id = 3
then amount else 0 end item_3_amount,
case when i.item_id = 8
then amount else 0 end item_8_amount,
i.period
from
Employees e
JOIN Items i
on e.rut = i.rut
order by
e.rut现在,如果您想要进行一些聚合,或者对特定期间进行筛选,则只需对金额使用SUM(),并为期间应用WHERE子句,如
select
e.rut,
e.name,
sum( case when i.item_id = 3
then amount else 0 end ) item_3_amount,
sum( case when i.item_id = 8
then amount else 0 end ) item_8_amount,
i.period
from
Employees e
JOIN Items i
on e.rut = i.rut
AND i.period = '2022-10'
group by
e.rut,
e.name,
e.period
order by
e.rut发布于 2022-10-06 14:03:30
尝试一下,您需要链接这两个表。
SELECT employees.rut, employees.name, () as Item_3_amount, () as Item_8_amount, Items.period FROM employees, Items where employees.rut = Items.rut发布于 2022-10-06 14:13:54
使用case语句来转轴项目金额。
从你的例子看,你似乎有错误的最终结果,我假设你打算在第二次记录上得到80000?
SELECT
employees.rut,
employees.name,
CASE WHEN items.Item_id = 3 THEN items.Amount ELSE 0 END as Item_3_amount,
CASE WHEN items.Item_id = 8 THEN items.Amount ELSE 0 END as Item_8_amount,
items.Period
FROM
employees
INNER JOIN
items
ON items.RUT = employees.RUThttps://stackoverflow.com/questions/73975090
复制相似问题