![](/img/trans.png)
[英]how to select multiple columns with only one distinct column from joining two tables with all id's are UNIQUEIDENTIFIER using Nhibernate
[英]SQL : Select Distinct rows by all columns but omit one column (say ID column)
我通過連接幾個表以通過Entity Framework提取數據來構建視圖。 由於此視圖沒有唯一列,因此EntityFramework無法檢索正確的結果集(即,第一列正在重復)。
為了解決這個問題,我添加了一個ID列,即ROW_NUMBER(),並在.net代碼(實體)中進行了必要的更改
現在,真正的問題困擾了我,因為此ID列也為之前的重復行分配了唯一標識:|。
我只想檢索不同的行,而不考慮圖片中的此ID /標識列。
例如 :
+--------+---------+-------------+-------------+
| ID | NUMBER | COUNTRY | LANG |
+--------+---------+-------------+-------------+
| 1 | 3968 | UK | English |
| 2 | 3968 | UK | English |
| 3 | 1234 | Greece | Greek |
| 4 | 1234 | Italy | Italian |
檢索應該像這樣進行:(如果忽略ID列,只需從fisrt和第二行中取出一個條目,因為它們是重復的,所以)
+--------+---------+-------------+-------------+
| ID | NUMBER | COUNTRY | LANG |
+--------+---------+-------------+-------------+
| 1 | 3968 | UK | English |
| 3 | 1234 | Greece | Greek |
| 4 | 1234 | Italy | Italian |
我在上面使用了一些虛擬列來輕松說明我的問題,否則我的真實查詢看起來像:
Create VIEW [dbo].[vw_PlanDetails]
AS
SELECT **DISTINCT** ROW_NUMBER() OVER (ORDER BY PLAN_CODE_LONG) ID, PM.PLAN_CODE_LONG, SA.SERVICE_AREA_NAME, SAC.COUNTY_NAME
FROM PLAN_MASTER AS PM INNER JOIN ...
……
如果需要,我可以粘貼整個查詢,但這會使問題復雜化。 因此,期待基於我的虛擬表的通用答案。
SELECT min(id) id, number, country, lang
FROM PLAN_MASTER
GROUP BY number, country, lang
我認為您應該使用另一個函數DENSE_RANK(),然后像這樣使用row_number函數:
SELECT *
FROM(
SELECT
ROW_NUMBER() OVER (ORDER BY PLAN_CODE_LONG) ROW_NUMBER_ID
,DENSE_RANK() OVER (ORDER BY PLAN_CODE_LONG) DENSE_RANK_ID
,PM.PLAN_CODE_LONG, SA.SERVICE_AREA_NAME, SAC.COUNTY_NAME
FROM PLAN_MASTER AS PM INNER JOIN ...
) AS Temp
WHERE
ROW_NUMBER_ID = DENSE_RANK_ID
希望thiw能幫到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.