在预期条件接近的上下文中指定的非布尔类型的表达式)

时间:2015-03-17 10:15:51

标签: mysql sql-server sql-server-2008 date

如果我删除Where子句,下面提到的查询工作正常..任何建议请??

SELECT     dbo.MPProjektBuchungserfassung.BuchungsErfassungID, dbo.MPProjektBuchungserfassung.QuellReferenz, dbo.MPProjektstamm.Projektnummer, 
                      dbo.MPProjektstamm.Projekttyp, dbo.MPProjektstamm.Matchcode AS ProjektMatchcode, dbo.MPProjektPhasen.PhasenID, 
                      dbo.MPProjektPhasen.Phase AS PhasenMatchcode, MPProjektleiterstamm.Personalnummer AS ProjektLeiternummer, 
                      MPProjektleiterstamm.Matchcode AS ProjektLeiterMatchcode, dbo.MPVKVertraege.VertragsID, dbo.MPVKVertraege.Vertragsnummer, 
                      dbo.MPVKVertraege.Bezeichnung, dbo.MPVKVertraege.KHKMandant, dbo.MPVKVertraege.Referenznummer, 
                      dbo.MPVKVertraege.Referenzzeichen, dbo.MPVKVertraegePositionen.Vertragsposition, dbo.MPVKVertraegePositionen.Matchcode AS PositionsMatchcode, 
                      dbo.MPHotlineAnfrage.AnfrageID, dbo.MPHotlineAnfrage.Kurzbeschreibung, dbo.MPHotlineAnfrage.AnfrageText, dbo.MPHotlineAnfrage.CardCode, 
                      dbo.MPHotlineAnfrage.AdressMatchcode, dbo.MPHotlineAnfrage.Referenz, dbo.MPPersonenstamm.Personalnummer, IsNull(dbo.MPVKVertraegePositionen.USER_Ratio, 1) AS 'Ratio',
                      dbo.MPPersonenstamm.Matchcode AS PersonalMatchcode,  dbo.MPVKVertraege.Projektnummer,
                      case dbo.MPPerioden.BezeichnungPeriode  when 'Januar' then '01.January' when 'Februar' then '02.February' when 'März' then '03.March' 
when 'April' then '04.April' when 'Mai' then '05.May' when 'Juni' then '06.June' 
when 'Juli' then '07.July' when 'August' then '08.August' when 'September' then '09.September' 
when 'Oktober' then '10.October' when 'November' then '11.November' when 'Dezember' then '12.December' 
End as 'Month',dbo.MPPerioden.BezeichnungJahr, 
                      dbo.MPProjektBuchungskopf.Periode, dbo.MPProjektBuchungserfassung.LeistungsTag, dbo.MPProjektBuchungserfassung.Menge, 
                      dbo.MPProjektBuchungserfassung.MengeFAK as 'Horas', dbo.MPProjektBuchungserfassung.Aktivitaet, dbo.MPProjektBuchungserfassung.Memo, 
                      dbo.MPProjektBuchungserfassung.Freigabe, MPProjektLeistungserfassung.FakturaID, 
                      CASE dbo.MPHotlineAnfrage.Status WHEN '1' THEN 'New' WHEN '2' THEN 'In Process' WHEN '3' THEN 'Customer Action' WHEN '4' THEN '3rd Party Investigation' WHEN
                       '5' THEN 'Closed' END AS 'Status',dbo.MPPerioden.Periode as 'Ind Periode',
                       T2.ContractNo,T2.Contract_Desc, ISNULL(T2.Q1, 0) AS 'Q1', 
ISNULL(T2.January, 0) AS 'January', ISNULL(T2.February, 0) AS 'February', ISNULL(T2.March, 0) AS 'March', 
ISNULL(T2.Invoiced_Q1, 0) AS 'Invoiced_Q1', ISNULL(T2.Q2, 0) AS 'Q2', ISNULL(T2.April, 0) AS 'April', 
ISNULL(T2.May,0) AS 'May', ISNULL(T2.June, 0) AS 'June', ISNULL(T2.Invoiced_Q2, 0) AS 'Invoiced_Q2', 
ISNULL(T2.Q3, 0) AS 'Q3', ISNULL(T2.July, 0) AS 'July', ISNULL(T2.August, 0) AS 'August', 
ISNULL(T2.Invoiced_Q3, 0) AS 'Invoiced_Q3', ISNULL(T2.Q4, 0) AS 'Q4', ISNULL(T2.September, 0) AS 'September', 
ISNULL(T2.October, 0) AS 'October',ISNULL(T2.November, 0) AS 'November', ISNULL(T2.December, 0) AS 'December', 
ISNULL(T2.Invoiced_Q4, 0) AS 'Invoiced_Q4',T2.Remaining_Year, T2.Comments, T2.Q1_Comments, T2.January_Comments, 
T2.February_Comments, T2.March_Comments, T2.Q2_Comments, T2.April_Comments, T2.May_Comments, T2.June_Comments, 
T2.Q3_Comments, T2.July_Comments, T2.August_Comments,T2.September_Comments, T2.Q4_Comments, T2.October_Comments, 
T2.November_Comments, T2.December_Comments                      
 , (SELECT Count(MPProjektLeistungserfassung.BuchungserfassungID) AS LCount 
              FROM MPProjektLeistungserfassung
            WHERE MPProjektLeistungserfassung.BuchungserfassungID = MPProjektBuchungserfassung.BuchungsErfassungID 
               AND MPProjektLeistungserfassung.Position > 0) AS Zuschlag                         

FROM         dbo.MPProjektBuchungserfassung INNER JOIN
                      dbo.MPProjektBuchungskopf ON dbo.MPProjektBuchungserfassung.BuchungsKopf = dbo.MPProjektBuchungskopf.BuchungsKopfID INNER JOIN
                      dbo.MPProjektLeistungserfassung AS MPProjektLeistungserfassung ON 
                      dbo.MPProjektBuchungserfassung.BuchungsErfassungID = MPProjektLeistungserfassung.BuchungserfassungID AND 
                      MPProjektLeistungserfassung.Position = 0 INNER JOIN
                      dbo.MPProjektstamm ON dbo.MPProjektBuchungserfassung.Projektnummer = dbo.MPProjektstamm.Projektnummer INNER JOIN
                      dbo.vwMPProjektleiter ON dbo.vwMPProjektleiter.Projektnummer = dbo.MPProjektBuchungserfassung.Projektnummer LEFT OUTER JOIN
                      dbo.MPProjektPhasen ON dbo.MPProjektBuchungserfassung.PhasenID = dbo.MPProjektPhasen.PhasenID INNER JOIN
                      dbo.MPVKVertraege ON MPProjektLeistungserfassung.VertragsID = dbo.MPVKVertraege.VertragsID INNER JOIN
                      dbo.MPVKVertraegePositionen ON MPProjektLeistungserfassung.Vertragsposition = dbo.MPVKVertraegePositionen.Vertragsposition left outer JOIN
                      dbo.MPHotlineAnfrage ON dbo.MPHotlineAnfrage.AnfrageID = dbo.MPProjektBuchungserfassung.QuellReferenz INNER JOIN
                      dbo.MPPersonenstamm AS MPProjektleiterstamm ON dbo.vwMPProjektleiter.Personalnummer = MPProjektleiterstamm.Personalnummer INNER JOIN
                      dbo.MPPersonenstamm ON dbo.MPProjektBuchungskopf.Personalnummer = dbo.MPPersonenstamm.Personalnummer INNER JOIN
                      dbo.MPPerioden ON dbo.MPProjektBuchungskopf.Periode = dbo.MPPerioden.PeriodeJahr
                      LEFT OUTER JOIN dbo.MP_USER_Retainers AS T2 ON dbo.MPVKVertraege.VertragsID= T2.ContractNo

where  DATEADD(MONTH,DATEDIFF(MONTH,-1,GETDATE())-1, -1)

order by dbo.MPProjektBuchungskopf.Periode

2 个答案:

答案 0 :(得分:0)

您错过了检查where子句

中的条件
WHERE  Dateadd(MONTH,Datediff(MONTH,-1,Getdate())-1,-1) = somedatecolumn -- Missed 

答案 1 :(得分:0)

where DATEADD(MONTH,DATEDIFF(MONTH,-1,GETDATE())-1, -1)

真的没什么意义。您需要评估或等同于另一个值。例如,

where dbo.mytable.mycolumn = DATEADD(MONTH,DATEDIFF(MONTH,-1,GETDATE())-1, -1)