我有一个表element_types
,其中element_type
列包含金额类型Basic Salary
和Housing Allowance
,我想生成2列,一列用于Basic Salary
,另一列用于Housing Allowance
,这些类型链接到另一个表,如雇员和这些类型的值等,因此我想生成2个单独的列,并且不在行中显示类型和金额。
SELECT .....,
(SELECT element_name
FROM pay_element_types_tl
WHERE element_name IN ('Basic Salary')) Salary,
(SELECT element_name
FROM pay_element_types_tl
WHERE element_name IN ('Housing Allowance')) Housing
这会产生误差
single-row subquery returns multiple rows
我怎样才能达到我想要?
我已尝试使用where
来使用多行子查询,但我希望从同一列派生多个具有不同名称的列
2条答案
按热度按时间w3nuxt5m1#
That's a
CASE WHEN
use case:Try out: db<>fiddle
Use aggregation around if required (
MAX
,MIN
etc., depending on what you need)wnvonmuf2#
您可以使用条件聚合来根据需要透视数据,如下所示
例如,在聚合值以防止生成多行时,将条件从WHERE子句移到CASE..WHEN表达式