Sql 如何匹配将发生变化的精确列值
我需要使用SQL查询一个表,该表包含一列通过字母和数字代码组合标识的库存项目。每一个都在一个单独的列中,所以我可以有相同或不同的阿尔法码的倍数,以及相应的数字。反过来,它们链接到客户订单表 如果每个客户订单的所有库存项目都具有相同的alpha代码,那么查询和返回结果的最佳方式是什么 stockitem alpha值会因订单而异,因此没有我要匹配的静态值。我想我需要验证找到的第一个stockitemalpha值,并将其与找到的链接到特定clientorderid的所有剩余stockitemalpha进行匹配Sql 如何匹配将发生变化的精确列值,sql,sql-server,Sql,Sql Server,我需要使用SQL查询一个表,该表包含一列通过字母和数字代码组合标识的库存项目。每一个都在一个单独的列中,所以我可以有相同或不同的阿尔法码的倍数,以及相应的数字。反过来,它们链接到客户订单表 如果每个客户订单的所有库存项目都具有相同的alpha代码,那么查询和返回结果的最佳方式是什么 stockitem alpha值会因订单而异,因此没有我要匹配的静态值。我想我需要验证找到的第一个stockitemalpha值,并将其与找到的链接到特定clientorderid的所有剩余stockitemalph
co.clientordersreference | si.stockitemalpha
------------------------------------------------
1234 | aaa
1234 | aaa
1234 | bbb
4343 | ccc
4343 | ccc
5454 | ddd
5454 | mmm
数据返回为:
co.clientordersreference | si.stockitemalpha | stockitemalphacount
-----------------------------------------------------------------------
1234 | aaa | 1
1234 | bbb | 1
4343 | ccc | 1
5454 | ddd | 1
5454 | ccc | 1
5454 | mmm | 1
而我期望的结果是,计数应用于每个clientorderreference,例如:
co.clientordersreference | stockitemalphacount
------------------------------------------------
1234 | 2
4343 | 1
5454 | 3
我的初始查询大致如下:
Select co.clientordersreference, si.stockaitemalpha
from clientorders co, stockitem si
where co.id = si.id
and distinct(si.stockitemalpha) -- this is criteria I'm unsure of
group by co.clientordersreference
根据您更新的问题,您可以尝试汇总客户订单,并对库存项目进行不同计数
SELECT
co.clientordersreference,
COUNT(DISTINCT si.stockitemalpha) AS COUNT(DISTINCT si.stockitemalpha)
FROM clientorders co
INNER JOIN stockitem si
ON co.id = si.id
GROUP BY
co.clientordersreference
谢谢,我确实尝试过,但它将计数标记为1,表示相同stockitemalpha的任意倍数,但对于单个clientorderreference,如果我的数据如下所示,则不会为每个存在的新stockitemalpha标记不同的计数,co.ClientOrders参考si.stockitemalpha 1234 aaa 1234 aaa 1234 bbb 4343 ccc 4343 ccc 5454 ddd 5454 mmm 5454 mmm结果:ClientRef stockitemalpha计数1234 aaa 1234 bbb 1 4343 ccc 1 5454 ddd 1 5454 mmm1@MattM请编辑您的询问并包括此示例数据以及您期望的输出。你将无法得到任何帮助,将表格转储到评论中。我们不会走得太快。更新您的问题,并向我们展示一张包含您的数据的表格。抱歉,Tim,新加入论坛并意识到错误,但在更正之前必须随时拨打电话。希望更新更清晰。干杯非常感谢,这实现了我所需要的,也有助于打破我在最初尝试中的错误。干杯