Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何匹配将发生变化的精确列值_Sql_Sql Server - Fatal编程技术网

Sql 如何匹配将发生变化的精确列值

Sql 如何匹配将发生变化的精确列值,sql,sql-server,Sql,Sql Server,我需要使用SQL查询一个表,该表包含一列通过字母和数字代码组合标识的库存项目。每一个都在一个单独的列中,所以我可以有相同或不同的阿尔法码的倍数,以及相应的数字。反过来,它们链接到客户订单表 如果每个客户订单的所有库存项目都具有相同的alpha代码,那么查询和返回结果的最佳方式是什么 stockitem alpha值会因订单而异,因此没有我要匹配的静态值。我想我需要验证找到的第一个stockitemalpha值,并将其与找到的链接到特定clientorderid的所有剩余stockitemalph

我需要使用SQL查询一个表,该表包含一列通过字母和数字代码组合标识的库存项目。每一个都在一个单独的列中,所以我可以有相同或不同的阿尔法码的倍数,以及相应的数字。反过来,它们链接到客户订单表

如果每个客户订单的所有库存项目都具有相同的alpha代码,那么查询和返回结果的最佳方式是什么

stockitem alpha值会因订单而异,因此没有我要匹配的静态值。我想我需要验证找到的第一个stockitemalpha值,并将其与找到的链接到特定clientorderid的所有剩余stockitemalpha进行匹配

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,新加入论坛并意识到错误,但在更正之前必须随时拨打电话。希望更新更清晰。干杯非常感谢,这实现了我所需要的,也有助于打破我在最初尝试中的错误。干杯