2012-04-18 21 views
0

이 결과는 변경되지 않아야하지만 특정 순서로 열을 다시 정렬해야합니다. 내가 원하는 순서가 넘어 인해 월요일 인해 내일 때문에 오늘 인해, 과거로 인해SQL에서 cte 다음에 열 순서 변경

사람 내가 SELECT 조항의 순서를 변경이

with cte AS (SELECT cl.Name, 

SUM(CASE WHEN dbo.TruncateDate(CURRENT_TIMESTAMP) = dbo.TruncateDate(oi.RequiredByDate) THEN 1 Else 0 END) as DueToday 
,SUM(CASE WHEN CURRENT_TIMESTAMP > oi.RequiredByDate THEN 1 ELSE 0 END) as PastDue 
,SUM(CASE WHEN DATEADD(dd, DATEDIFF(dd, 0, oi.RequiredByDate), 0) = dateadd(day, datediff(day, '19000101',CURRENT_TIMESTAMP),'19000102') then 1 ELSE 0 END) as DueTomorrow 
,SUM(CASE WHEN DateDiff(day, getdate(), RequiredByDate) BETWEEN 2 and 7 AND DateName(weekday, RequiredByDate) = 'Monday' Then 1 ELSE 0 END) as DueMonday 
,SUM(CASE WHEN dbo.TruncateDate(CURRENT_TIMESTAMP) <= dbo.TruncateDate(oi.RequiredByDate) THEN 1 ELSE 0 END) as DueBeyond 


FROM OrderItems oi 
JOIN Orders o ON o.OrderID = oi.OrderID 
JOIN Counties c ON c.FIPS = o.FIPS 
JOIN Clients cl ON cl.ClientID = o.ClientID 
JOIN Milestones m ON m.MilestoneID = oi.LastMilestoneID 
JOIN Products p ON p.ProductID = oi.ProductID 
JOIN Vendors v ON v.VendorID = oi.VendorID 
LEFT JOIN ClientBranches clb ON clb.ClientID = o.ClientID 
WHERE QueueID > 0 AND cl.Name NOT LIKE 'TES%' 
AND cl.NAME LIKE 'HLC%' 
GROUP BY cl.Name 


) 

Select * FROM cte 

답변

0

도움이 될 수 있습니다. 당신의 선택에

with cte AS (SELECT cl.Name 

,SUM(CASE WHEN dbo.TruncateDate(CURRENT_TIMESTAMP) <= dbo.TruncateDate(oi.RequiredByDate) THEN 1 ELSE 0 END) 
as DueBeyond 
,SUM(CASE WHEN DateDiff(day, getdate(), RequiredByDate) BETWEEN 2 and 7 AND DateName(weekday, RequiredByDate) = 'Monday' Then 1 ELSE 0 END) 
as DueMonday 
,SUM(CASE WHEN DATEADD(dd, DATEDIFF(dd, 0, oi.RequiredByDate), 0) = dateadd(day, datediff(day, '19000101',CURRENT_TIMESTAMP),'19000102') then 1 ELSE 0 END) 
as DueTomorrow 
,SUM(CASE WHEN dbo.TruncateDate(CURRENT_TIMESTAMP) = dbo.TruncateDate(oi.RequiredByDate) THEN 1 Else 0 END) 
as DueToday 
,SUM(CASE WHEN CURRENT_TIMESTAMP > oi.RequiredByDate THEN 1 ELSE 0 END) 
as PastDue 

FROM OrderItems oi 
JOIN Orders o ON o.OrderID = oi.OrderID 
JOIN Counties c ON c.FIPS = o.FIPS 
JOIN Clients cl ON cl.ClientID = o.ClientID 
JOIN Milestones m ON m.MilestoneID = oi.LastMilestoneID 
JOIN Products p ON p.ProductID = oi.ProductID 
JOIN Vendors v ON v.VendorID = oi.VendorID 
LEFT JOIN ClientBranches clb ON clb.ClientID = o.ClientID 
WHERE QueueID > 0 AND cl.Name NOT LIKE 'TES%' 
AND cl.NAME LIKE 'HLC%' 
GROUP BY cl.Name 


) 

Select * FROM cte 
+0

Select * FROM cte 교체는이 일을하지만, 비록 cl.name의 columnn, 걱정이 포함되지 않은 도움 – wondergoat77

1

:

SELECT DueBeyond, DueMonday, DueTomorrow, DueToday, PastDue FROM cte

2

Select DueBeyond, DueMonday, DueTomorrow, DueToday, PastDue 
from cte 
+0

주셔서 감사합니다 나는 그것이 필요하다는 것을 지정하지 않았다. – wondergoat77