[英]SQL: count occurrences for each row
我有一個名為Codes
的 SQL 表,其主列code
為 String 類型。 我還有另一個名為Items
表,其中的列codestring
字符串也是 String 類型。 此條目始終包含一個字符串,其中上表的某些代碼以空格分隔。 現在我想獲取所有代碼及其包含相應代碼的項目數。 我可以這樣做嗎?
代碼:
code|...
----|---
"A0A"|
"A0B"|
...|
項目:
...|codestring
----|---------
|"A0A C2B F1K"
|"A0C D2S H3K"
|...
輸出:
代碼:
code|...|noOfItems
----|---|---------
"A0A"|...|5
"A0B"|...|10
...|...|...
假設所有代碼都是不同的(或者至少沒有代碼是另一個代碼的子字符串),您可以使用 LIKE 運算符:(未經測試)
SELECT codes.code, count(*)
FROM codes LEFT JOIN items ON items.codestring LIKE '%' + codes.code + '%'
GROUP BY codes.code;
你有一個可怕的數據格式,應該修復它。 每個代碼的映射到代碼應該有一個單獨的行。
如果代碼都是三個字符,那么 L Scott Johnson 的答案就足夠接近了。 否則,您應該考慮分隔符:
SELECT c.code, count(i.codestring)
FROM codes c LEFT JOIN
items i
ON ' ' || i.codestring || ' ' LIKE '% ' || c.code || ' %'
GROUP BY c.code;
注意代碼的其他修復:
||
.count()
將返回0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.