1

私の質問はIN、複数の値に対してSQLを実行することを本当に要約していると思います。

ここに私がこれまでに持っているもののSQL Fiddleがあります。

簡単に言えば、Cases複数のTypes.

Cases特定のものを含むフィルターが必要ですTypes

6 行 (col1,col2)... (1,2),(1,3)(1,4),(2,3),(2,4),(2,5) があるとします。Casescol2 に 2 と 3 と 4 があるものだけを選択しますか?

2,3,4 は単なる使用例です。ほぼ任意の組み合わせが可能です (SQL Fiddle には、これを決定するテーブルがいくつかあります)。

4

3 に答える 3

0

これは少し近いですか?

SELECT * from CaseTypes CT
INNER JOIN TypeBillable TB    ON CT.TypeId = TB.TypeId
where CT.CaseId in
(
select CaseID from CaseTypes
PIVOT (count (TypeId) for TypeId in ([2],[3],[4])) as x
where [2] > 0 and [3] > 0 and [4] > 0
)
于 2013-03-28T16:39:38.463 に答える
0

試す:

select [CaseId]
from CaseTypes
where [TypeID] in (2,3,4)
group by [CaseId]
having count(distinct [TypeID]) = 3

(SQLFiddleはこちら)

于 2013-03-28T16:46:46.153 に答える
0

あなたが試すかもしれないいくつかのこと:

派生テーブルの使用:

SELECT a.col1
FROM (SELECT col1 FROM Cases WHERE col2 = 2) a
INNER JOIN (SELECT col1 FROM Cases WHERE col2 = 3) b ON a.col1 = b.col1
INNER JOIN (SELECT col1 FROM Cases WHERE col2 = 4) c ON a.col1 = c.col1

集計の使用:

SELECT col1
FROM Cases
GROUP BY col1
HAVING 
   SUM(CASE col2 WHEN 2 THEN 1 ELSE 0 END) > 0 AND
   SUM(CASE col2 WHEN 3 THEN 1 ELSE 0 END) > 0 AND
   SUM(CASE col2 WHEN 4 THEN 1 ELSE 0 END) > 0
于 2013-03-28T16:48:55.393 に答える