Хорошо, у меня более миллиона записей, и мне нужно выбрать всю информацию из базы данных, где количество столбцов больше или равно 10.Использование SQL Server 2005 Я пытаюсь сделать HAVING в предложении WHERE безумным?
Я знаю, что с использованием того, что я должен использовать группу и используя Я не могу использовать агрегированные функции с операторами, поэтому я хочу, чтобы в псевдокоде было
Select column1,column2,column3
From MYdatabase
Where count(column1) > 10
Здесь я застрял. Использую ли я подзапрос и добавляю столбец с именем count? Я не уверен, как я буду кодировать это из рук и быть тем, что я начинающий пользователь SQL, я мог бы смотреть в совершенно неправильном направлении.
Весь мой запрос ниже, я хочу изменить, если это так, будут выбраны только записи с подсчетом (callid)> = 10.
Select
FiscalMonthYear,
'MyCenter' = Case EP.Center
When 'Livermore Call Center' Then 'LCC'
When 'Natomas Call Center' Then 'NCC'
When 'Concord Call Center' Then 'CCC'
When 'Virtual Call Center' Then 'VCC'
When 'Morgan Hill Call Center' Then 'MHCC'
Else Center
End,
ECH.segstart,
ECH.consulttime,
EP.Queue,
(EP.MgrFName +' '+ EP.MgrLName)AS Manager,
(EP.SupFName +' '+ EP.SupLName)AS Supervisor,
(EP.RepFName +' '+ EP.RepLName)As Agent,
EP.RepPERNR,
LEFT(ECH.segstart, 19) as SegmentDateTime,
ECH.origlogin,
ECH.dialed_num,
ECH.segment,
ECH.SegStart_Date,
ECH.callid
FROM CMS_ECH.dbo.CaliforniaECH ECH
INNER JOIN CAPLESQL02.InfoQuest.dbo.IQ_Employee_Avaya_Id A ON ECH.origlogin = A.AvayaID
AND getdate() BETWEEN StartDate AND EndDate
INNER JOIN CAPLESQL02.InfoQuest.dbo.IQ_Employee_Profiles_v3 EP ON A.IQID = EP.RepID
AND getdate() BETWEEN RepToSup_StartDate and RepToSup_EndDate
AND getdate() BETWEEN SupToMgr_StartDate and SupToMgr_EndDate
AND getdate() BETWEEN RepQueue_StartDate and RepQueue_EndDate
INNER JOIN Cal_RemReporting.dbo.udFiscalMonthTable f on ECH.SegStart_Date = f.Tdate
Where dialed_num not like '______'
AND dialed_num not like ''
AND dialed_num not like '_______'
and EP.Center is NOT Null
and EP.Center not like 'Comm Ops'
and EP.Center not like 'Same Day Group'
and MgrLName not like 'Hollman'
and consulttime > 0
and ECH.SegStart_Date between getdate()-90 and getdate()-1
and EP.Queue not IN ('BST','Collections', 'DST','DSR','Escalations','Cable Store')
я решил проблему сам, используя внутренний запрос присоединения, который выбирает топ-10 и соединяет все данные на колонке dialed_num. Работает безупречно, спасибо вам всем за вашу помощь!
Благодарим за помощь! Добавление этого в нижней части запроса дает эту ошибку: Subquery возвращает более 1 значения. Это недопустимо, когда подзапрос следует =,! =, <, <= , >,> = или когда подзапрос используется как выражение. – CodingIsAwesome
Моя ошибка в настоящее время изменяется. –
Внесены изменения - см. Исправление. –