在我的表,我有以下值:在SQL Server中,如何選擇共享列值的行?
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傳遞給它的參數。爲真,函數必須與表中的ProductId一起匹配兩個參數(Model和Year),但它們必須屬於同一組。
例如,如果我將值200,Chevy,1988傳遞給函數,它必須返回False。請注意,表中可以找到3個值,但它們屬於不同的組。另一方面,如果我傳遞給函數值200,福特,1986,它必須返回真,因爲所有3個值匹配並屬於同一組。
我想這樣做的一種方式是在多個步驟,如:
- 選擇模型匹配,則所有匹配的一年,並把它們插入到一個臨時表中的所有記錄;
- 選擇不同的組到另一個臨時表;
- 循環遍歷每個組,檢查是否找到該組中的所有匹配項,在函數結束時返回true或返回true。
我不知道是否有一個更好的方法,只用一個SELECT命令就可以在1個步驟中執行此操作。
是的,非常聰明的解決方案。那會做。感謝Christian。 –