簡體   English   中英

將子查詢中的一列添加到主查詢的 SELECT 中,而不在主查詢中應用 WHERE 中的過濾器

[英]Add a column from subquery to the SELECT of main query without applying filteres from WHERE in main query

我需要以下問題的幫助:

所以我有一個表 TABLE1,其中包含 Date、Name、STAT1、STAT2、PROBLEM1 列

我有一個這樣的查詢:

SELECT Date, Name, sum(STAT1), sum(STAT2)
FROM TABLE1
WHERE PROBLEM1 <> 0 
GROUP BY Date, Name

這個查詢的結果是我想要的,但我還需要添加 2 列: TOTALCOUNT 基本上是每個組的行數,而不應用過濾器 (PROBLEM1 <> 0 ) 和 COUNTERRORS 是每個組的計數 PROBLEM1 = 0。

所以給你進一步的例子。 對於日期 A,名稱 BI 有 1000 行。 其中 300 個有 PROBLEM1 = 0。我運行上面提到的第一個查詢,由於過濾器 WHERE PROBLEM1 <> 0,它基於 700 行計算我的 sum(STAT1)、sum(STAT2)。我需要找到一種方法在結果中添加兩列,所以最后我的表看起來像:

DATE NAME sum(STAT1)  sum(STAT2) TOTALCOUNT COUNTERRORS
A     B       50          3.5      1000        300

有可能嗎? 我正在嘗試使用子查詢但沒有成功。

您可以進行條件聚合:

SELECT Date, Name, 
       sum(case when PROBLEM1 <> 0  then stat1 else 0 end) as stat1, 
       sum(case when PROBLEM1 <> 0  then stat2 else 0 end) as stat2, 
       count(*) as TOTALCOUNT,
       sum(PROBLEM1 = 0) as COUNTERRORS 
FROM TABLE1
GROUP BY Date, Name;

暫無
暫無

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

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