#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
Возможно, это просто пятничная вещь, но я не могу понять, как отобразить эти записи в виде одной строки, мои данные выглядят так
PTaskID Part Requisition Service Requisition
394512 Yes No
394512 No Yes
То, что я хочу, это 1 строка с PTaskID
но со следующим, если есть больше строк, как в примере, и в одной из них есть Yes, Part Requisition
тогда общее значение строки для Part Requisition
равно Yes, и к нему должна применяться та же логика Service Requisition
.
Любая помощь была бы отличной PJD
CREATE TABLE [dbo].[Load](
[PTaskID] [int] NOT NULL,
[Part Requisition] [varchar](3) NOT NULL,
[Service Requisition] [varchar](3) NULL
) ON [PRIMARY]
INSERT INTO Load (PTaskID, [Part Requisition], [Service Requisition])
VALUES
(394512, 'Yes', 'No'),
(394512, 'No', 'Yes')
Комментарии:
1. Рассматривали ли вы возможность замены
yes
иno
на 1 и 0? Таким образом, вы можете выполнитьMAX()
инструкцию. Вы всегда можете использовать aCASE
, чтобы перевести их обратно вyes
илиno
после.
Ответ №1:
Попробуйте это
Select Ptaskid,
case when sum(case when [Part Requisition] = 'Yes' then 1 else 0 end)> 0 then 'Yes' else 'No' end 'Part Requisition',
case when sum(case when [Part Requisition] = 'Yes' then 1 else 0 end)> 0 then 'Yes' else 'No' end 'Service Requisition'
from [Load]
group by ptaskid
Комментарии:
1. Привет, Азар, это сработало, мне просто нужно было заменить второй оператор case «Заявка на деталь» на «Заявка на обслуживание», и все работало хорошо с несколькими комбинациями …. спасибо за помощь
Ответ №2:
Учитывая, что «Да» следует после «Нет» (* в большинстве сопоставлений), вы могли GROUP
бы, а затем выполнить Max
, а именно
SELECT PTaskID, MAX([Part Requisition]) as [MaxPartRequisition],
MAX([Service Requisition]) as [MaxServiceRequisition]
FROM [Load]
GROUP BY PTaskID;
Комментарии:
1. Привет, Стюарт, я никогда не думал об использовании MAX таким образом, приятно каждый день узнавать что-то новое!
Ответ №3:
Это работает лучше с любой сортировкой, а также идеально
Select Ptaskid,
convert(varchar,max(CONVERT(varbinary, [Part Requisition]))),
convert(varchar,max(CONVERT(varbinary, [Service Requisition])))
from [Load]
group by ptaskid