【发布时间】:2025-11-28 02:05:02
【问题描述】:
在我的表中,我有以下值:
ProductId Type Value Group
200 Model Chevy Chevy
200 Year 1985 Chevy
200 Year 1986 Chevy
200 Model Ford Ford
200 Year 1986 Ford
200 Year 1987 Ford
200 Year 1988 Ford
在我的查询中,我想知道我的产品在给定年份是否与某个型号兼容。我正在尝试构建一个返回 true 或 false 的函数,具体取决于我传递给它的参数 ProductId、Model 和 Value。确实,Function 必须匹配两个参数(Model 和 Year)以及表中的 ProductId,但它们必须属于同一组。
例如,如果我将值 200、Chevy、1988 传递给函数,它必须返回 False。请注意,这 3 个值在表中找到,但它们属于不同的组。
另一方面,如果我将值 200, Ford, 1986 传递给函数,它必须返回 True,因为所有 3 个值都匹配并且属于同一个组。
我认为一种方法是分多个步骤,例如:
- 选择与模型匹配的所有记录,然后选择与年份匹配的所有记录,并将它们插入到临时表中;
- 选择不同的组到另一个临时表;
- 循环遍历每个组,检查是否在该组中找到所有匹配项,找到时返回 true,在函数结束时返回 false。
我想知道是否有更好的方法,只使用一个 SELECT 命令一步完成。
【问题讨论】:
标签: sql sql-server tsql