oracle中单行多行
multiple lines in a single line in oracle
我有这个 Select :
Select CASE WHEN tab1.type = 'aaa' THEN tab1.price ELSE 0 END col1,
CASE WHEN tab1.type = 'bbb' THEN tab1.price ELSE 0 END col2,
CASE WHEN tab1.type = 'ccc' THEN tab1.price ELSE 0 END col3,
CASE WHEN tab1.type = 'ddd' THEN tab1.price ELSE 0 END col4
FROM tab1
INNER JOIN tab2
ON tab1.id = tab2.id_fruits
给出这个结果
col1 col2 col3 col4
20 0 0 0
0 40 0 0
0 0 60 0
有没有可能
col1 col2 col3 col4
20 40 60 0
我想要一行为每一列取一个不为零的值,如果所有值都是零,我取一个零
感谢
如果您只想要不同于 0 的最大一个,请使用 MAX
如果您想要一个代表所有不同于 0 的数字,您可以在每个 SELECT 语句上使用 SUM。
Returns the sum of all the values, or only the DISTINCT values, in the expression. SUM can be used with numeric columns only. Null values are ignored.
这是一种方式:
SELECT MAX(CASE WHEN tab1.type = 'aaa' THEN tab1.price ELSE 0 END) col1,
MAX(CASE WHEN tab1.type = 'bbb' THEN tab1.price ELSE 0 END) col2,
MAX(CASE WHEN tab1.type = 'ccc' THEN tab1.price ELSE 0 END) col3,
MAX(CASE WHEN tab1.type = 'ddd' THEN tab1.price ELSE 0 END) col4
FROM tab1
INNER JOIN tab2
ON tab1.id = tab2.id_fruits
我有这个 Select :
Select CASE WHEN tab1.type = 'aaa' THEN tab1.price ELSE 0 END col1,
CASE WHEN tab1.type = 'bbb' THEN tab1.price ELSE 0 END col2,
CASE WHEN tab1.type = 'ccc' THEN tab1.price ELSE 0 END col3,
CASE WHEN tab1.type = 'ddd' THEN tab1.price ELSE 0 END col4
FROM tab1
INNER JOIN tab2
ON tab1.id = tab2.id_fruits
给出这个结果
col1 col2 col3 col4
20 0 0 0
0 40 0 0
0 0 60 0
有没有可能
col1 col2 col3 col4
20 40 60 0
我想要一行为每一列取一个不为零的值,如果所有值都是零,我取一个零 感谢
如果您只想要不同于 0 的最大一个,请使用 MAX
如果您想要一个代表所有不同于 0 的数字,您可以在每个 SELECT 语句上使用 SUM。
Returns the sum of all the values, or only the DISTINCT values, in the expression. SUM can be used with numeric columns only. Null values are ignored.
这是一种方式:
SELECT MAX(CASE WHEN tab1.type = 'aaa' THEN tab1.price ELSE 0 END) col1,
MAX(CASE WHEN tab1.type = 'bbb' THEN tab1.price ELSE 0 END) col2,
MAX(CASE WHEN tab1.type = 'ccc' THEN tab1.price ELSE 0 END) col3,
MAX(CASE WHEN tab1.type = 'ddd' THEN tab1.price ELSE 0 END) col4
FROM tab1
INNER JOIN tab2
ON tab1.id = tab2.id_fruits