我想唯一地識別使用相同分組的行的組。
例如,如果我們想象一些 epos 資料,我想識別購買了完全相同的專案組合的客戶,將他們全部與該組的定義相關聯(見下面的例子)。
這感覺像是一個視窗函式的問題,但我仍在試圖找出如何使用它們來識別行的唯一組合,而不是按客戶或專案進行磁區。
在下面的示例中,我希望將所有僅出現的紅色和藍色識別為集合 1,綠色和黃色識別為集合 2,等等。映射中的行/值的數量是無限制的,因此透視然后分組/連接將不適合。
什么是最簡單的方法呢?
uj5u.com熱心網友回復:
最簡單的方法實際上是字串聚合。 在標準SQL中,這看起來像:
select items。
listagg(customerid, ' 。 ') within group (order by customerid) as customerids。
row_number() over (orderby items) as group_id
from (select customerid,
listagg(item, ' 。 ') within group (order by item) as items
from t
) c
group by items。
結果集并不完全是你所指定的,因為id被合并在一行中。
編輯:
在SQL Server中,語法將使用string_agg():
select items,
string_agg(customerid, ', ') within group (order by customerid) as customerids。
row_number() over (orderby items) as group_id
from (select customerid,
string_agg(item, ', ') within group (order by item) as items
from t
) c
group by items。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/311084.html
標籤:
上一篇:變數內的查詢
下一篇:基于欄位名的數字的SQL條件

