Sql server SQL Server选择具有不同id但在多个元组中具有相同值的记录
我有一个具有位置ID、产品ID和技术ID的表。我希望能够在数据中找到一个位置具有两个不同技术ID的不同产品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
|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更正。那是另外一回事,不是我的本意。