CASE 语句 SQL 中的多列 return
Multiple columns return in CASE Statement SQL
我有两个表,基于 TABLE1 中一个字段的总和,我必须 return 来自 TABLE2 的不同数据集:
我试图通过 Case 语句实现这一点,但收到一条错误消息,指出 subselect 必须只有一个字段。
有更好的方法吗?只是当 table1 中一列的总和为 0 时,不要 select table2
中的任何内容
表 1:
表 2:
我的 SQL:
SELECT
CASE
WHEN SUM(transaction_unit_failed) > 0
THEN (
SELECT sale_event_nr, business_unit, transaction_nr, transaction_unit_failed_number
FROM TABLE2
)
WHEN SUM(transaction_unit_failed) = 0
THEN (
SELECT sale_event_nr, business_unit, transaction_nr, transaction_unit_failed_number
FROM TABLE2
WHERE 1 = 2
)
FROM TABLE1
select * from table2
where exists (
select 1
from table1
having sum(transaction_unit_failed) > 0
);
同样:
select * from table2
where (
select sum(transaction_unit_failed)
from table1
) > 0;
https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=3f68d250bc9a3235767b86626092799e
如果有令人信服的理由,您当然可以将其写成联接。它会消除很好地使用 *
到 return 的便利,只有来自 table.
的列
select *
from table2 inner join (
select sum(transaction_unit_failed) as stuf
from table1
) on stuf > 0;
SELECT sale_event_nr, business_unit, transaction_nr, transaction_unit_failed_number
FROM TABLE2
WHERE (SELECT SUM(transaction_unit_failed) > 0
FROM TABLE1)
我有两个表,基于 TABLE1 中一个字段的总和,我必须 return 来自 TABLE2 的不同数据集:
我试图通过 Case 语句实现这一点,但收到一条错误消息,指出 subselect 必须只有一个字段。
有更好的方法吗?只是当 table1 中一列的总和为 0 时,不要 select table2
中的任何内容表 1:
表 2:
我的 SQL:
SELECT
CASE
WHEN SUM(transaction_unit_failed) > 0
THEN (
SELECT sale_event_nr, business_unit, transaction_nr, transaction_unit_failed_number
FROM TABLE2
)
WHEN SUM(transaction_unit_failed) = 0
THEN (
SELECT sale_event_nr, business_unit, transaction_nr, transaction_unit_failed_number
FROM TABLE2
WHERE 1 = 2
)
FROM TABLE1
select * from table2
where exists (
select 1
from table1
having sum(transaction_unit_failed) > 0
);
同样:
select * from table2
where (
select sum(transaction_unit_failed)
from table1
) > 0;
https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=3f68d250bc9a3235767b86626092799e
如果有令人信服的理由,您当然可以将其写成联接。它会消除很好地使用 *
到 return 的便利,只有来自 table.
select *
from table2 inner join (
select sum(transaction_unit_failed) as stuf
from table1
) on stuf > 0;
SELECT sale_event_nr, business_unit, transaction_nr, transaction_unit_failed_number
FROM TABLE2
WHERE (SELECT SUM(transaction_unit_failed) > 0
FROM TABLE1)