我在SQL Server數據庫中有3個表。
我想獲取distinct/unique
行當我加入這3個表。加入3個表並返回唯一/不同的行
對此,我正在使用distinct
關鍵字後SELECT
查詢,但它不工作。
它仍然在SELECT
查詢返回重複記錄(即ID, Column1, Column2
所有記錄都在重複,因爲重複的記錄在3和表1已存在)
請讓我知道如何加入3個表,並返回unique/distinct
行。
請回復
編輯:下面是我當前的查詢與結果集一起:
請檢查返回的結果。它有重複的記錄。
編輯2: 真的很抱歉以上混淆。請查看本節:
要求:
現在,我要選擇記錄在下文中從上面的結果集的格式:
- 如果任何請求ID(的exaple:ABC123)/ BarcodeNo(例如:B1)具有操作 =保存&一起提交然後只有
Action = Submit
記錄/行應在SELECT查詢中顯示。 - 如果任何請求ID(例如:XYZ678)/ BarcodeNo(例如:B22)具有 行動=保存&提交&重新提交(多個重新提交)一起等 然後僅
Action = Latest Resubmit
(在多個重新提交) 記錄/行應顯示在SELECT查詢。 - 如果任何請求ID(例如:GHI987)/ BarcodeNo(例如:B3)具有操作 =提交&重新提交(multile重新提交)一起等則僅
Action = Latest Resubmit
(在多個重新提交)記錄/行應SELECT查詢顯示。 - 如果任何請求ID(例如:PQR902)/ BarcodeNo(例如:B44)具有 行動=提交&重新提交一起等那麼只有
Action = Resubmit
記錄/行應SELECT查詢顯示。 - 如果有任何RequestID(例如:TTT878)/ BarcodeNo(例如:B5)有動作 =單獨提交等等,那麼只有
Action = Submit
記錄/行應在SELECT查詢中顯示。
以上「等」手段,操作比「保存」等,「提交」,「重新提交」
爲了滿足上述要求(黃色文字,基於上述要求),我想下面的查詢:
Select distinct R.RequestID, R.BarcodeNo, W.Action, W.CreatedDate
INTO #TempTable
From [Sunway_AP].[Invoice].[tbl_Request] (NOLOCK) R
Left Join [Sunway_AP].[Invoice].[tbl_Xml](NOLOCK) X On X.XmlID = R.XmlID
Left Join [Sunway_AP].[Invoice].[tbl_WorkflowHistory] (NOLOCK) W On W.RequestID = R.RequestID
order by R.RequestID
SELECT * FROM
(
SELECT distinct * FROM (SELECT distinct *, ROW_NUMBER() OVER(PARTITION BY RequestID ORDER BY CreatedDate desc) RowNumber FROM #TempTable
WHERE [Action] = 'Resubmit') AS t
WHERE RowNumber = 1
UNION ALL
SELECT distinct * FROM (SELECT distinct *, ROW_NUMBER() OVER(PARTITION BY RequestID ORDER BY CreatedDate desc) RowNumber FROM #TempTable
WHERE [Action] = 'Save'
AND RequestID NOT IN (SELECT DISTINCT RequestID FROM #TempTable WHERE [action] = 'Submit')
AND RequestID NOT IN (SELECT DISTINCT RequestID FROM #TempTable WHERE [action] = 'Resubmit')) AS t
WHERE RowNumber = 1
UNION ALL
SELECT distinct * FROM (SELECT distinct *, ROW_NUMBER() OVER(PARTITION BY RequestID ORDER BY CreatedDate desc) RowNumber FROM #TempTable
WHERE [Action] = 'Submit'
AND RequestID NOT IN (SELECT DISTINCT RequestID FROM #TempTable WHERE [action] = 'Resubmit')) AS t
WHERE RowNumber = 1
) AS a
order by RequestID
但它並沒有給我預期的結果。 請讓我知道在查詢中我應該更改哪些內容以獲得所需的輸出?
請發表您的查詢 –
檢查:http://stackoverflow.com/questions/14673225/distinct-rows-from-three-tables-using-joins – iJay
你的問題與C#有什麼關係?你使用的是什麼DBMS(MySQL,SQL Server,Postgres,...)? –