如何制作一个“两个依赖参数”的SQL存储过程

时间:2016-12-12 21:58:56

标签: sql-server stored-procedures

我只是想不出来,我的意思是两个家属参数是这样的:

假设我有这样的记录:

ID    Letter     Number
-----------------------
23    A          1
23    A          2
23    B          1
23    B          2
81    A          1
81    B          2

用户输入:

  • 第一个参数: A,B
  • 第二个参数: 1,2

然后只返回ID 23,因为它是唯一一个尊重所有这些条件的人:

A1,A2,B1,B2

每当我尝试一些查询时,都会返回81 ...

在我的问题的背景下,它可以快速地制定4个条件,如:

A and 1, A and 2, B and 1, B and 2

但想象一下,如果我有16 * 16 ......

将它们全部写下来会非常漫长......

1 个答案:

答案 0 :(得分:4)

您可以在k-options="agent.tabOptions"子句中使用COUNT DISTINCT

HAVING

对于更动态的方法,您可以将条件放在表变量中:

SELECT Id
FROM #Tbl
WHERE
    Letter IN('A', 'B')
    AND Number IN(1, 2)
GROUP BY Id
HAVING
    COUNT(DISTINCT Letter) = 2
    AND COUNT(DISTINCT Number) = 2;

ONLINE DEMO