SELECT T1.[TransId], T1.[TransRowId], MAX(T0.[ShortName]), MAX(T0.[TransType]), MAX(T0.[CreatedBy]), MAX(T0.[BaseRef]), MAX(T0.[SourceLine]),
MAX(T0.[RefDate]), MAX(T0.[DueDate]),(case
when 0=<datediff(day,MAX(T0.[DueDate]),getdate())<=30 then ‘0——30′
when 30<datediff(day,MAX(T0.[DueDate]),getdate())<=60 then ‘30——60′
when 60<datediff(day,MAX(T0.[DueDate]),getdate())<=90 then ‘60——90′
when 90<datediff(day,MAX(T0.[DueDate]),getdate())<=120 then ‘90——120′
else ‘120+’
end) as aging
, MAX(T0.[TaxDate]), MAX(T0.[BalDueCred]) + SUM(T1.[ReconSum]), MAX(T0.[BalFcCred]) + SUM(T1.[ReconSumFC]), MAX(T0.[BalScCred]) +
SUM(T1.[ReconSumSC]), MAX(T0.[LineMemo]), MAX(T3.[FolioPref]), MAX(T3.[FolioNum]), MAX(T0.[Indicator]), MAX(T0.[Account])
FROM [dbo].[JDT1] T0 INNER JOIN [dbo].[ITR1] T1 ON T1.[TransId] = T0.[TransId] AND T1.[TransRowId] = T0.[Line_ID]
INNER JOIN [dbo].[OITR] T2 ON T2.[ReconNum] = T1.[ReconNum] INNER JOIN [dbo].[OJDT] T3 ON T3.[TransId] = T0.[TransId]
WHERE T0.[Account] IN(N’11310101′) AND T0.[RefDate] >= (‘2008-01-01 00:00:00:000′) AND T0.[RefDate] <= (‘2010-12-27 00:00:00:000′)
AND T2.[ReconDate] > (‘2010-12-27 00:00:00:000′) AND T1.[IsCredit] = (‘C’) –借贷方判断,C 贷方
AND T0.[ShortName] IN(N’A00010′,N’C00001′,N’C00002′,N’C00003′,N’C00004′,N’C00005′,N’C00006′,N’C00007′,N’C00008′,N’C00009′,N’C00010′,N’C9999′)
GROUP BY T1.[TransId], T1.[TransRowId]
HAVING MAX(T0.[BalFcCred]) <>- SUM(T1.ReconSumFC) OR MAX(T0.[BalDueCred]) <>- SUM(T1.ReconSum)
———消息 102,级别 15,状态 1,第 23 行
‘<’ 附近有语法错误。
消息 102,级别 15,状态 1,第 43 行
‘<’ 附近有语法错误。
消息 102,级别 15,状态 1,第 63 行
‘<’ 附近有语法错误。

去掉case就可以运行,最近一个月整天SQL,都晕了。
SQL code
when 0=<datediff(day,MAX(T0.[DueDate]),getdate())<=30 then ‘0——30′
when 30<datediff(day,MAX(T0.[DueDate]),getdate())<=60 then ‘30——60′
when 60<datediff(day,MAX(T0.[DueDate]),getdate())<=90 then ‘60——90′
when 90<datediff(day,MAX(T0.[DueDate]),getdate())<=120 then ‘90——120′
这个要分开写SQL code
when 0=<datediff(day,MAX(T0.[DueDate]),getdate()) and datediff(day,MAX(T0.[DueDate]),getdate()) and<=30 then ‘0——30′
SQL codewhen 0=<datediff(day,MAX(T0.[DueDate]),getdate())<=30 then ‘0——30′when 30<datediff(day,MAX(T0.[DueDate]),getdate())<=60 then ‘30——60′when 60<datediff(day,MAX(T0.[DueDate]),getdate())<=90……SQL code
datediff(day,MAX(T0.[DueDate]),getdate())>=0 AND datediff(day,MAX(T0.[DueDate]),getdate())<=30
SQL code
datediff(day,MAX(T0.[DueDate]),getdate())<=60 and datediff(day,MAX(T0.[DueDate]),getdate())>=30
这样写
搞晕了,一直以为能那么些大于等于。
[Quote=]搞晕了,一直以为能那么些大于等于。[/Quote]结贴吧