orcle 有三个表,a表没数据,b表或者c表有数据, 取b表和c表数据,a,b,c表都有数据取a表数据,其余为空,咋样写case when判断
时间: 2023-11-27 18:55:27 浏览: 56
你可以使用以下的SQL语句来实现:
```
SELECT
CASE
WHEN COUNT(*) > 0 THEN 'b表有数据'
ELSE 'b表没数据'
END AS b_status,
CASE
WHEN COUNT(*) > 0 THEN 'c表有数据'
ELSE 'c表没数据'
END AS c_status,
CASE
WHEN COUNT(*) > 0 THEN 'a表没数据'
ELSE 'a表有数据'
END AS a_status
FROM
(
SELECT * FROM b
UNION ALL
SELECT * FROM c
UNION ALL
SELECT * FROM a
) AS abc
```
这里使用了UNION ALL操作符,将三个表合并成一个表,然后使用CASE WHEN语句来判断每个表是否有数据,最终输出每个表的状态。注意,如果要取出b表和c表的数据,你可以在UNION ALL之前先写一个SELECT语句来选择需要的列。
相关问题
orcle 有三个表,a表没数据,b表或者c表有数据, 取b表和c表数据,a,b,c表都有数据取a表数据,其余为
可以使用 UNION ALL 和 EXISTS 关键字来实现这个需求。
假设 a 表、b 表和 c 表都有相同的结构,可以使用以下 SQL 语句:
```
SELECT * FROM b
WHERE EXISTS (SELECT 1 FROM c)
UNION ALL
SELECT * FROM c
WHERE EXISTS (SELECT 1 FROM b)
UNION ALL
SELECT * FROM a
WHERE EXISTS (SELECT 1 FROM b)
```
首先,第一行查询 b 表的数据,但只有当 c 表有数据时才返回结果。第二行查询 c 表的数据,但只有当 b 表有数据时才返回结果。第三行查询 a 表的数据,但只有当 b 表有数据时才返回结果。最后,使用 UNION ALL 将三个结果集合并起来。
如果 a 表、b 表和 c 表的结构不同,需要在 SELECT 子句中指定相同的列名并进行适当的类型转换。
Orcle 有一张维度表,如何关联另外一张表,取维度表的维度,取另外一张表数据sql
在 Oracle 中,可以使用 JOIN 操作将维度表与另一个表进行关联,并取出所需的数据。假设维度表的名称为 dim_table,另一个表的名称为 main_table,可以使用以下 SQL 语句实现:
```
SELECT
dim_table.dimension_column,
main_table.data_column
FROM
dim_table
JOIN main_table ON dim_table.key_column = main_table.key_column
```
其中,dim_table.dimension_column 是维度表中需要获取的维度列名,main_table.data_column 是另一个表中需要获取的数据列名,dim_table.key_column 和 main_table.key_column 是两个表之间关联的键列名。
通过上述 SQL 语句,可以将两张表关联起来,并取出所需的维度和数据。
阅读全文