所以我有一个包含列的mysql表 部件号(varchar)和客户#(varchar)
我正在尝试创建第三列,其中包含部分#的唯一配对以及客户#的列表。
select Part_num, Cust_num,
(select count(*) from my_table where Part_num = (The current value of Part_num)
and Cust_num in (select Cust_num from my_table where Part_num = 'XYZ123')) as Pairs
from my_table;
我想弄清楚有多少Customer#包含当前部分。如果我替换(Part_num的当前值)Part#说“ABC789”,那么查询正确地识别它们是X对的数量,但我需要为每个Part#动态地执行此操作。
非常感谢任何帮助。
答案 0 :(得分:1)
您应该在此处选择部件号,使用COUNT()聚合功能,以及按客户编号分组,这样您就可以获得与该部件相关的每个客户的数量。
看起来像这样:
SELECT partNumber, COUNT(*) AS numCustomers
FROM myTable
WHERE partNumber = 'ABC789';
如果客户编号可能出现多次,并且您需要不同的客户,则可以将distinct customerNumber
放入COUNT子句中:
SELECT partNumber, COUNT(distinct customerNumber) AS numCustomers
FROM myTable
WHERE partNumber = 'ABC789';
答案 1 :(得分:0)
您可以参考(correlated) subquery中的外部查询,只需使用表别名。
SELECT t.part_num,
t.cust_num,
(
SELECT Count(*)
FROM my_table t2
WHERE t2.part_num = t.part_num
AND cust_num IN
(
SELECT cust_num
FROM my_table
WHERE part_num = 'XYZ123')) AS pairs
FROM my_table t;