есть таблица siteOrder
, где я проверяю заказы, размещенные сайтами на текущей неделе, две колонки, о которых идет речь, - siteName
и OrderDate
, я рассматриваю только четыре сайта и игнорирую другие.sql server insert missing record
Но если нет помещенного заказа для любого из этих четырех участков, то я хочу 0
, который будет отображаться на сайте, а не не отображается ни одной строки, вот мое решение
SELECT SiteName,COUNT(SiteName) AS Completed FROM SiteOrder WHERE SiteName IN ('Site1','Site2','Site3','Site4')
and DATEPART(mm,OrderDate) = DATEPART(mm,getdate())
and DATEPART(yyyy,OrderDate) = DATEPART(yyyy,getdate())
and DATEPART(dd,OrderDate) > DATEPART(dd,DATEADD(DAY, 1-DATEPART(WEEKDAY, getdate()), getdate()))
GROUP BY SiteName
order by SiteName
, что дает мне
SiteName Completed
-----------------------
Site1 1
Site2 1
Site3 1
обратите внимание, что на сайте 4 отсутствует я хочу, чтобы показывать 0 на сайте 4, а затем не показывая ничего на всех
Проблема в вас где положение. Вы сохранили условия столбца OrderDate. Если для Site4 нет записи, она будет исключена. Я дал решение ниже. – AK47
@ AK47 - Что делать, если у вас нет заказов * на сайте SiteOrders для одного из этих сайтов? –
@ AK47 - um, no. Если строк нет (не только даны критерии даты), для этого сайта этот сайт не может существовать в вашем результирующем наборе. –