我有一個SQL命令從數據庫中獲取項目編號,項目標題,員工姓名&號碼。SQL在不更改數據的情況下添加過濾參數
SELECT
DOS.NUMFOLDER as ProjectNumber,
DOS.DESCRIPTION as ProjectTitle,
EMP.NUMEMPL as EmployeeNumber,
EMP.EMPLNAME+ ' ' + EMP.EMPLSURNAME as EmployeeName
FROM DOSEMPDT DEM
INNER JOIN DOSSIER DOS ON DEM.SEQCONTRAT = DOS.SEQCONTRAT
INNER JOIN EMPLOYE EMP ON DEM.SEQEMPLOYE = EMP.SEQEMPLOYE
--INNER JOIN BILLING BIL ON DEM.SEQCONTRAT = FAC.SEQCONTRAT
WHERE (DEM.DATEFINAFF IS NULL OR DEM.DATEFINAFF > GETDATE())
AND (DOS.DATEFIN IS NULL OR DOS.DATEFIN > GETDATE())
--AND FAC.DTBILLING IS NOT NULL
--AND FAC.DTBILLING >= DATEADD(mm, -1, GETDATE())
ORDER BY NoProjet
這給了我想要的東西;包含項目編號,項目名稱和員工的表格。預期的結果看起來有點像這樣:
projectA *titlea* 1111 Jim
projectA *titlea* 2222 James
projectB *titleb* 1111 Jim
projectB *titleb* 3333 Paul
但我想一個過濾器添加到結果。我仍然希望看到同一個項目的多個實例以及相關的員工,但我只想看到某些項目;那些日期不到一個月前的BILLING
,沒有顯示BILLING
。
刪除INNER JOIN BILLING
之前的註釋,使結果重複多次,可能是因爲許多項目有很多BILLING
,但我不知道如何避免這種情況。我認爲這個問題存在於我的第三個INNER JOIN
,我試過LEFT JOIN
,RIGHT JOIN
等......但無濟於事。
這是一個很好的開始。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
你的語法是SQL Server,所以我刪除了MySQL標籤。 –
我以爲我這樣做是不正確的,但實際上問題是我沒有想到數據會像他們一樣(同一日期,同一員工和同一個項目的兩張不同的發票),所以我認爲我正在創建重複條目。感謝@Mohamed Seifeddine Fnayou讓我走上正軌。我會投票結束這個問題,因爲它現在沒有多大意義。 – Felix