在上一列的基础上添加另一个不同的列



假设我在数据库中有一个这样的表

Name  Day  VALUE1  VALUE2
========================
A     mon      1       2
A     fri      2       2

我想要像一样

Name  VALUE1(mon)  VALUE2(mon)  VALUE1(fri)  VALUE2(fri)
=====================================================
A        1             2            2            2

我能做这样的吗?如果可以的话,请告诉我如何使用查询

您可以使用透视查询:

SELECT
Name,
MAX(CASE WHEN DAY = 'mon' THEN VALUE1 END) AS "Value1(mon)",
MAX(CASE WHEN DAY = 'mon' THEN VALUE2 END) AS "Value2(mon)",
MAX(CASE WHEN DAY = 'fri' THEN VALUE1 END) AS "Value1(fri)",
MAX(CASE WHEN DAY = 'fri' THEN VALUE2 END) AS "Value2(fri)"
FROM yourTable
GROUP BY Name;

您可以按如下方式进行自完全外部联接:

Select coalesce(m.day,f.day) as day,
M.value1 as monval1,
M.value2 as monval2,
F.value1 as frival1,
F.value2 as frival2
From your_table m full outer join your_table f
On m.name = f.name 
And m.day = 'mon' and f.day = 'fri'

最新更新