Подавление нескольких значений в Microsoft SQL
-
21-12-2019 - |
Вопрос
Ниже приведен пример кода, который у меня есть, и я хотел бы, чтобы он распечатывал номер учетной записи пользователя вместе с номером каждой процедуры и порядковым номером, который отображается для этой встречи, например:
acc num proc num Seq num
--------------------------------
Vxxxxxxxxx26 44.42 1
Vxxxxxxxxx26 57.94 2
Vxxxxxxxxx26 57.32 3
Vxxxxxxxxx26 38.93 4
Но вместо этого он печатает множество дубликатов одного и того же объекта для одной и той же даты и времени, например:
acc num proc num Seq num
--------------------------------
Vxxxxxxxxx26 44.42 1
Vxxxxxxxxx26 57.94 2
Vxxxxxxxxx26 57.32 3
Vxxxxxxxxx26 38.93 4
Vxxxxxxxxx26 44.42 1
Vxxxxxxxxx26 57.94 2
Vxxxxxxxxx26 57.32 3
Vxxxxxxxxx26 38.93 4
Vxxxxxxxxx26 44.42 1
Vxxxxxxxxx26 57.94 2
Vxxxxxxxxx26 57.32 3
Vxxxxxxxxx26 38.93 4
Как я могу ограничить его, чтобы он отображал только 1 набор значений, а не 5 наборов значений?
Кстати, я новичок в Stack Overflow и SQL, поэтому имейте это в виду при обзоре.Спасибо.
ПРИМЕЧАНИЕ:Кажется, будто это OeOrders
стол.Когда это не СОЕДИНЕНО, оно имеет соответствующие строки, когда оно ПРИСОЕДИНЕНО, оно расширяется со всеми несколькими строками.
КОД
DECLARE
@StartDate DateTime,
@EndDate DateTime
SET @StartDate = '10/28/2013 00:00:000'
SET @EndDate = '11/28/2013 23:59:000'
SET @RecordType = '6'
SELECT
,AbstractData.AccountNumber AS AcctNum_2
,'I9:'+AbsDrgProcedures.DrgProcedure AS ProcCode_3
,AbsDrgProcedures.ProcedureSeqID AS Priority_4
FROM AbstractData
LEFT JOIN AbsDrgProcedures
ON (AbsDrgProcedures.VisitID = AbstractData.VisitID) AND AbsDrgProcedures.VisitID IS NOT NULL
LEFT JOIN OeOrders
ON (OeOrders.VisitID = AbstractData.VisitID)
WHERE
AbstractData.PtStatus <> 'REF'
AND OeOrders.ServiceDateTime BETWEEN @StartDate and @EndDate
Решение
Выберите отдельные результаты - SELECT DISTINCT
скорее, чем SELECT
.
Другие советы
Выбрать отдельные отфильтрует дубликаты, просто добавьте отдельные после выбора, и все должно работать.