我有桌子 **表格:**
MTID code boxnumber
1 10-01 10
1 10-02 10
1 10-03 10
1 10-04 10
1 10-05 10
1 11-01 11
1 11-02 11
1 11-03 11
1 11-04 11
1 11-05 11
1 12-01 12
1 12-02 12
1 12-03 12
2 13 NULL
2 14 NULL
2 15 NULL
2 16 NULL
2 17 NULL
2 18 NULL
2 19 NULL
要求:
返回结果,MTID 2所有行和
MTID 1表示满箱(count(boxnumber)= 5,其中MTID = 1)
在预期的结果中,代码= 12-xx WHERE MTID = 1不返回,因为它不是完整的框。
预期结果
MTID code boxnumber
1 10-01 10
1 10-02 10
1 10-03 10
1 10-04 10
1 10-05 10
1 11-01 11
1 11-02 11
1 11-03 11
1 11-04 11
1 11-05 11
2 13 NULL
2 14 NULL
2 15 NULL
2 16 NULL
2 17 NULL
2 18 NULL
2 19 NULL
任何人都可以帮忙吗? 谢谢。
答案 0 :(得分:1)
我们可以在此处尝试使用COUNT
作为分析函数来确定5个需求的计数。匹配的行属于MTID = 1
,计数为5 boxnumber
,或者MTID
的其他值。
SELECT MTID, code, boxnumber
FROM
(
SELECT *, COUNT(*) OVER (PARTITION BY MTID, boxnumber) cnt
FROM yourTable
) t
WHERE (MTID = 1 AND cnt = 5) OR MTID <> 1;