그래서 판매 주문 수를 제공하고 이전 날짜 범위와 비교할 보고서를 만들려고합니다. 불행히도 이러한 각각의 계산이 동일한 테이블 열에 대해 실행될 때 결과를 반환하는 방법에 대해서는 확신 할 수 없습니다.동일한 데이터베이스 열에 대해 단일 결과 집합으로 여러 쿼리 반환
이상적으로 내 출력이 NULL을 포함하여, 다음과 같이 보일 것입니다 것은
partner Today LastYear TwoYear
------- ------ -------- --------
zzz 10 15 4
yyy 2 4
xxx 3 1 2
내가 아래로 기본적인 생각을 가지고 값 :
DECLARE @currentDay DATETIME
SET @currentDay = DATEDIFF(day,0,GETDATE()) -- Gives it 00:00:00.000 for time
-- Todays orders
SELECT count(s.po_id) as 'Orders Today',c.tp_name
FROM [EDI_001].[dbo].[303v850h] as s
join [EDI_001].[dbo].[Trade] as c
on s.TP_PartID = c.TP_PartID
where s.ExportDate < @currentDay AND
s.ExportDate > DATEADD(day,-1,@currentDay)
group by c.tp_name
order by c.tp_name;
-- Last Years Day's orders
SELECT count(s.po_id) as 'Orders Today',c.tp_name
FROM [EDI_001].[dbo].[303v850h] as s
join [EDI_001].[dbo].[Trade] as c
on s.TP_PartID = c.TP_PartID
where s.ExportDate < DATEADD(year,-1,@currentDay) AND
s.ExportDate > DATEADD(year, -1,DATEADD(day,-1,@currentDay))
group by c.tp_name
order by c.tp_name;
내가 가서 당신이 할 수있는,이 중단됩니다 쿼리는 where 절에서 날짜 범위를 변경하는 것과 거의 동일합니다. 두 개의 쿼리를 단일 결과 집합으로 결합하는 방법은 잘 모릅니다. 또한, 조인은 어느 쿼리에서나 빈 집합을 반환하지 않습니다. 나는 현재 조인을 사용하지 않을 것이지만, 왼쪽 외부 조인과 다른 결과를 보이지는 않는다는 것을 알고 있습니다. 그러나 현실적으로 한 번에 하나의 문제와 첫 번째 단계는 단일 결과 집합을 얻는 것입니다. 어떤 도움이라도 대단히 감사하겠습니다.
이 질문은'>'와'<'를 사용하기 때문에 BETWEEN에 포함되어 있기 때문에 경계에서 자정에 레코드가 있다면 다른 결과가 나옵니다. 또한's.po_id'가 null 인 경우 다른 카운트를 제공합니다. – GarethD