簡體   English   中英

CASE 語句中返回多列 SQL

[英]Multiple columns return in CASE Statement SQL

我有兩個表,根據TABLE1中一個字段的總和,我必須從 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
);

https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=3f68d250bc9a3235767b86626092799e

如果有令人信服的理由,您當然可以將其寫為連接。 它將消除很好地使用*僅返回一個表中的列的便利。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM