使用以下查询:
SELECT ADSTAT, ADASNO, ORDERNO FROM BLUEWATER ORDER BY ADASNO;
我可以得到以下内容:
ADSTAT ADASNO ORDERNO
40 ASN123 40303020
40 ASN123 40303020
30 ASN124 40303021
30 ASN124 40303021
30 ASN125 40303021
我正在寻找一个查询:
(1)考虑区分/消除任何重复的ADASNO行(只要ADASNO没有重复,无关紧要)(2)然后只创建第四列,显示存在的重复ORDERNO记录的总数(不在表格整体但在新的子集中已经消除了重复的ADASNO记录。)
目标数据库是DB2。我目前不知道什么版本,但将寻求确定这,虽然我假设不是最近的版本。
我的目标是产生以下内容的查询:
ADSTAT ADASNO ORDERNO ORDERNOTOTAL
40 ASN123 40303020 1
30 ASN124 40303021 2
30 ASN125 40303021 2
解决方案需要避免使用PARTITION关键字,因为此版本的DB2不接受它。
我仍在尝试建立DB2数据库的版本,足以说它不是最近的。
答案 0 :(得分:1)
我们可以使用CTE或临时表来执行此操作,因为无法使用PARTITION关键字
with temp1 as (
SELECT ADASNO, MAX(adstat) as ADSTAT, MAX(ORDERNO) as ORDERNO
FROM BLUEWATER
group by ADASNO),
temp2 as ( select ADSTAT, COUNT(ORDERNO) as Count FROM temp1 GROUP BY ADSTAT)
SELECT temp1.ADASNO, temp1.ADSTAT, temp1.ORDERNO, temp2.Count
FROM temp1
join temp2
on temp1.ADSTAT = temp2.ADSTAT