2013-08-01 45 views
-1

我試圖在DB2中查詢以下內容。 T28,T29和T30是表名。它們的文件名是所有表中的列。我必須通過文件名在所有三個表中找到文件名的計數。你能幫我嗎?通過該文件名從多個表組中獲取文件名計數

那麼,我正在DB2中嘗試這個。

我正在尋找這樣的輸出。

 
filename T28COUNT T29COUNT T30COUNT 

回答

0

嘗試

SELECT filename, 
     SUM(CASE WHEN t = 28 THEN 1 ELSE 0 END) t28count, 
     SUM(CASE WHEN t = 29 THEN 1 ELSE 0 END) t29count, 
     SUM(CASE WHEN t = 30 THEN 1 ELSE 0 END) t30count 
    FROM 
(
    SELECT 28 AS t, filename 
    FROM t28 
    UNION ALL 
    SELECT 29 AS t, filename 
    FROM t29 
    UNION ALL 
    SELECT 30 AS t, filename 
    FROM t30 
) q 
GROUP BY filename 
ORDER BY filename 

這裏是SQLFiddle演示了SQL Server中,但我相信它應該工作幾乎相同的DB2。

+0

嗨,我想顯示在每個表中的文件名計數T28,T29,T30表中的文件名稱F1的計數。 T28,T29和T30表中的文件f2的計數。 T28只是一個表名。 – Rams

+0

@Rams嗨。這完全是**答案中的查詢。你看看我提供的sqlfiddle演示嗎?你在你的系統上試過了嗎?它使用來自3個表的'union'結果集的條件計數。如果您因爲某種原因認爲它沒有完成其工作,請詳細說明原因並根據它提供一些樣本數據和期望的結果。 – peterm

+0

嗨Peterm,查詢確實是我需要的。謝謝你,這是完美的。 – Rams