久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PARTITION BY 只考慮兩個特定的列進行聚合?

PARTITION BY to consider only two specific columns for aggregation?(PARTITION BY 只考慮兩個特定的列進行聚合?)
本文介紹了PARTITION BY 只考慮兩個特定的列進行聚合?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我的表有以下數據:

<頭>
REF_NOPRD_GRPACC_NO
ABC121234
ABC9C1234
DEFAB7890
DEFTY9891

我正在嘗試構建一個匯總每個客戶帳戶數量的查詢 - 產品組與此目的無關,因此我的預期結果是:

I'm trying to build a query that summarises the number of accounts per customer - the product group is irrelevant for this purpose so my expected result is:

<頭>
REF_NOPRD_GRPACC_NONO_OF_ACC
ABC1212341
ABC9C12341
DEFAB78902
DEFTY98912

我嘗試使用窗口函數來做到這一點:

I tried doing this using a window function:

SELECT
    T.REF_NO,
    T.PRD_GRP,
    T.ACC_NO,
    COUNT(T.ACC_NO) OVER (PARTITION BY T.REF_NO) AS NUM_OF_ACC

FROM TABLE T

但是,返回的 NUM_OF_ACC 值是 2,而不是上面示例中第一個客戶 (ABC) 的 1.該查詢似乎只是計算每個客戶的唯一行數,而不是根據需要識別帳戶數.

However, the NUM_OF_ACC value returned is 2 and not 1 in the above example for the first customer (ABC). It seems that the query is simply counting the number of unique rows for each customer, rather than identifying the number of accounts as desired.

我該如何解決這個錯誤?

How can I fix this error?

Fiddle 鏈接 - https://dbfiddle.uk/?rdbms19&fiddle=83344cbe95fb46d4a1640caf0bb6d0b2"=83344cbe95fb46d4a1640caf0bb6d0b2

Link to Fiddle - https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=83344cbe95fb46d4a1640caf0bb6d0b2

推薦答案

您需要 COUNT(DISTINCT,遺憾的是 SQL Server 不支持將其作為窗口函數.

You need COUNT(DISTINCT, which is unfortunately not supported by SQL Server as a window function.

但是你可以用 DENSE_RANKMAX

SELECT
    T.REF_NO,
    T.PRD_GRP,
    T.ACC_NO,
    MAX(T.rn) OVER (PARTITION BY T.REF_NO) AS NUM_OF_ACC
FROM (
    SELECT *,
        DENSE_RANK() OVER (PARTITION BY T.REF_NO ORDER BY T.ACC_NO) AS rn
    FROM [TABLE] T
) T;

DENSE_RANK 將按 ACC_NO 排序的行進行計數,但忽略關系,因此 MAX 將是不同值的數量.

DENSE_RANK will count up rows ordered by ACC_NO, but ignoring ties, therefore the MAX of that will be the number of distinct values.

db<>fiddle.uk

這篇關于PARTITION BY 只考慮兩個特定的列進行聚合?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 国产探花视频在线观看 | 亚洲激情综合 | 亚洲第十页 | 国产精品一区三区 | 国产黄色免费网站 | 国产区在线 | 中文字幕在线观看网站 | 日韩综合久久 | 日韩高清一区 | 久久爱综合 | 亚洲三级在线播放 | 青青草一区二区 | 欧美色综合天天久久综合精品 | 国产精品手机在线 | 欧美日韩国产成人 | 欧美午夜视频 | 福利小视频| 老司机深夜福利视频 | 久久黄视频 | 国产精品久久久久久久午夜 | 亚洲精品综合 | 中文字字幕 | 在线观看av片 | 久久精品一区二区三区四区 | 一区二区网站 | 九九久久精品视频 | 午夜黄色小视频 | 中文字幕在线观看免费 | 亚色网站 | av在线播放不卡 | 日本美女一级片 | 成人网页| 日韩中文字幕在线播放 | 四虎8848精品成人免费网站 | 午夜性福利 | 涩涩久久 | 欧美日韩中文字幕在线观看 | 日韩一区二区中文字幕 | 亚洲一区免费观看 | 97久久久久| 怡红院久久 |