2016-08-08 3 views
0

У меня есть база данных и вам нужно создать отчет из таблиц, которые мне предоставили.Уменьшение дублирования строк при наличии нескольких значений в дочерних записях

Тем не менее, запрос источника данных, который я использую, - по сути, он отлично работает - производит дубликаты из-за полей «Параметр» и «Параметр» (каждое может быть одним из двух значений для каждого уникального тега) ,

DB Illustration

То, что я хотел бы сделать, это принять каждый параметр, каждый из Op параметра и их значения и пометить их как новые поля для уникального тега (например, «AI17611A»), так что каждый тег отображается только один раз со всеми параметрами.

Возможно ли это? Если да, то как мне это сделать?

+0

Имеет ли [этот вопрос] (http://stackoverflow.com/q/13278590/2144390) адрес вашей проблемы? –

+0

Не совсем, но похоже, что в этой ссылке код конкатенируется в строку. Мне нужно, чтобы он был введен в новые поля –

ответ

0

Если вы хотите новое поле для каждого возможного значения [Op параметра], то вы можете использовать агрегацию (GROUP BY) запросов, например, для таблицы образцов

[so38830066] 

ID Tag  Parameter Op Parameter 
-- -------- --------- ------------ 
1 AI17611A HLPR  HLOP   
2 AI17611A HLPR  HHAOPT  
3 AI17611B HLPR  HLOP   
4 AI17611C HLPR  HHAOPT  

, то запрос

SELECT 
    so38830066.Tag, so38830066.Parameter, 
    Min([Op Parameter]='HLOP') AS isHLOP, 
    Min([Op Parameter]='HHAOPT') AS isHHAOPT 
FROM so38830066 
GROUP BY so38830066.Tag, so38830066.Parameter; 

производит

Tag  Parameter isHLOP isHHAOPT 
-------- --------- ------ -------- 
AI17611A HLPR   -1  -1 
AI17611B HLPR   -1   0 
AI17611C HLPR   0  -1 

Вы могли бы сделать то же самое для multilple значений [Параметр] (например, создайте поле [isHLPR]), а затем просто GROUP BY [Tag].