Select

SELECT 與 GROUP BY 列?

  • January 30, 2020

情況是這樣的:

我有一個表,每個字母副本都有一行,其中還包含字母 ID。我想要一個查詢,輸出每個字母副本行,其中包含字母副本 ID、字母 ID 和字母 ID 的所有副本的計數……

表行

Letter Copy ID      Letter ID
1                   1
2                   1
3                   1
4                   2
5                   2
6                   3

預期產出

Letter Copy ID      Letter ID      Letter Copy Count
1                   1              3
2                   1              3
3                   1              3
4                   2              2
5                   2              2
6                   3              1

如果您無權訪問視窗函式,則可以使用子查詢:

SELECT Letter_Copy_ID
    , Letter_ID
    , ( SELECT COUNT(1) 
        FROM T AS T2
        WHERE T1.Letter_ID = T2.Letter_ID ) AS Letter_Copy_Count
FROM T AS T1

如果您有權訪問視窗函式:

SELECT Letter_Copy_ID
    , Letter_ID
    , COUNT(1) OVER (PARTITION BY Letter_ID) AS Letter_Copy_Count
FROM T

您應該避免在標識符中使用空格(我在範例中使用了 _),但如果您覺得必須使用它們,可以用 " 引用它們,如 “Letter Copy Count” 中所示。請注意,這會使標識符區分大小寫,所以你必須使用準確的拼寫。

引用自:https://dba.stackexchange.com/questions/258563