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

PARTITION BY 只考慮兩個特定的列進(jìn)行聚合?

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

問題描述

我的表有以下數(shù)據(jù):

<頭>
REF_NOPRD_GRPACC_NO
ABC121234
ABC9C1234
DEFAB7890
DEFTY9891

我正在嘗試構(gòu)建一個匯總每個客戶帳戶數(shù)量的查詢 - 產(chǎn)品組與此目的無關(guān),因此我的預(yù)期結(jié)果是:

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

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

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.該查詢似乎只是計算每個客戶的唯一行數(shù),而不是根據(jù)需要識別帳戶數(shù).

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 不支持將其作為窗口函數(shù).

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 排序的行進(jìn)行計數(shù),但忽略關(guān)系,因此 MAX 將是不同值的數(shù)量.

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

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

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

相關(guān)文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標(biāo)記轉(zhuǎn)換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創(chuàng)建視圖?)
Create calculated value based on calculated value inside previous row(根據(jù)前一行內(nèi)的計算值創(chuàng)建計算值)
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屋-程序員軟件開發(fā)技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉(zhuǎn)換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 91精品久久久 | 国产欧美一区二区三区久久 | 国产精品久久av | 99pao成人国产永久免费视频 | 欧美日日| 中文字幕在线一区二区三区 | 亚洲劲爆av| 亚洲成人一区 | 日本在线播放一区二区 | 日韩久草 | 亚洲综合色视频在线观看 | 国产一区二区视频免费在线观看 | 日本精品久久久久久久 | 91免费高清 | 日本三级网站在线 | 日韩一级电影免费观看 | 欧美 日韩 视频 | 亚洲欧美视频 | 国产日韩中文字幕 | 欧美成人一级 | 色综合久久天天综合网 | 2018天天干天天操 | 精品久久网 | 久草视频观看 | 国产一区h | 99热精品6 | 一区二区三区高清不卡 | 精品亚洲国产成av人片传媒 | 国产精品国产精品国产专区不卡 | 中文字幕 国产 | 粉嫩av久久一区二区三区 | 日韩精品区 | 在线天堂免费中文字幕视频 | 日本久久久久久久久 | 亚洲欧美国产精品久久 | 一区二区三区视频播放 | 国产精品免费在线 | 国产高清精品在线 | 国产在线不卡 | 国产在线高清 | 欧美成人aaa级毛片在线视频 |