假设我在数据库中有一个这样的表
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'