Я бы сделал это:
SELECT v.userIP, NumOfVisits, NumOfOrders, v.Date
FROM (
SELECT userIP, count(*) as NumOfVisits,
dateadd(dd, datediff(dd, 0, visitDate),0) as Date
FROM visits
GROUP BY userIP, dateadd(dd, datediff(dd, 0, orderDate), 0)) v
LEFT JOIN (
SELECT userIp, count(*) as NumOfOrders,
dateadd(dd, datediff(dd, 0, orderDate),0) as Date
FROM orders
GROUP BY UserIP, dateadd(dd, datediff(dd, 0, orderDate), 0)) o
ON o.UserIP = v.UserIP
AND o.Date = v.Date
и ваш результат должен быть таким:
78.34.5.11 | 3 | 1 | 2009.10.06
78.34.5.19 | 9 | 0 | 2009.10.06
если вам не нужно группировать по userIP, вы можете сделать это:
SELECT NumOfVisits, NumOfOrders, v.Date
FROM (
SELECT count(*) as NumOfVisits,
dateadd(dd, datediff(dd, 0, visitDate),0) as Date
FROM visits
GROUP BY dateadd(dd, datediff(dd, 0, visitDate), 0)) v
LEFT JOIN (
SELECT count(*) as NumOfOrders,
dateadd(dd, datediff(dd, 0, orderDate),0) as Date
FROM orders
GROUP BY dateadd(dd, datediff(dd, 0, orderDate), 0)) o
ON o.Date = v.Date
и ваш результат будет выглядеть так:
12 | 1 | 2009.10.06