Sql server SQL Server选择具有不同id但在多个元组中具有相同值的记录

Sql server SQL Server选择具有不同id但在多个元组中具有相同值的记录,sql-server,Sql Server,我有一个具有位置ID、产品ID和技术ID的表。我希望能够在数据中找到一个位置具有两个不同技术ID的不同产品ID的实例。下面是我想找到的一个例子 |Location ID | Product ID | Tech ID | +------------+------------+---------+ |Location 1 | Product 1 |Tech ID 1| |Location 1 | Product 1 |Tech ID 2| |Location 2 | Product 1

我有一个具有位置ID、产品ID和技术ID的表。我希望能够在数据中找到一个位置具有两个不同技术ID的不同产品ID的实例。下面是我想找到的一个例子

|Location ID | Product ID | Tech ID |
+------------+------------+---------+
|Location 1  | Product 1  |Tech ID 1|
|Location 1  | Product 1  |Tech ID 2|
|Location 2  | Product 1  |Tech ID 1|
|Location 2  | Product 2  |Tech ID 2|
|Location 3  | Product 1  |Tech ID 1|
|Location 3  | Product 1  |Tech ID 2|
|Location 4  | Product 3  |Tech ID 1|
|Location 4  | Product 3  |Tech ID 2|

从这个例子中,我想找到位置2,因为产品是不同的。谢谢你的帮助

这里有一个简单的方法应该表现得很好:

--SELECT THE DISTINCT Location ID from the sub query
SELECT DISTINCT x.[Location ID]
FROM
(
   --Sub query to Group by LocationId and Product ID, along with Row_Number
   --TO get an integer value of which records have more than one 
   --when grouped by locationId and productId, if Row Number > 1 it means there are more than one record
   --for same location id (so there are different products)
   SELECT [Location ID], ROW_NUMBER() OVER(PARTITION BY [Location ID] ORDER BY [Location ID]) AS 
[RowNumber]
   FROM TABLE
   GROUP BY [Location ID], [Product ID]
) AS x
WHERE x.[RowNumber] > 1
SELECT * FROM MyTable t1
WHERE EXISTS(SELECT * FROM MyTable 
  WHERE t1.LocationID=t2.LocationId
  AND t1.ProductID<>t2.ProductID
  AND t1.TechID<>t2.TechID
)

您的示例说明了这一位置具有不同的产品ID,但这意味着什么?对于两个不同的技术ID。@TabAlleman这意味着该位置在一个位置使用两个不同的产品作为不同的技术ID。因此,要明确的是,如果一个位置有两个不同的产品ID,但两个技术ID都相同,则您不想返回该位置?@TabAlleman更正。那是另外一回事,不是我的本意。