Я довольно новичок в SQL и перепробовал много поисков, но не могу выполнить то, что хочу.
У меня есть значения настраиваемых полей, которые содержатся в одной таблице и столбце, каждое настраиваемое поле получает свой собственный идентификатор, носохраненное значение находится в одном столбце.
Я пытаюсь получить 1 столбец для каждого настраиваемого поля с соответствующим значением, вот мой запрос:
SELECT PRODUCT.id AS ProductId, PRODUCT.num AS ProductNumber,
CASE WHEN customvarcharlong.customfieldid = '6' THEN customvarcharlong.info
END AS OEM1Name,
CASE WHEN customvarcharlong.customfieldid = '7' THEN customvarcharlong.info
END AS OEM1NumbersA
FROM product
JOIN customvarcharlong ON product.id=customvarcharlong.recordid
JOIN customfield ON customvarcharlong.customfieldid=customfield.id
WHERE PRODUCT.activeFlag = TRUE
ORDER BY PRODUCT.id
Моя проблема заключается в том, что я получаюстрока для каждого настраиваемого поля, у которого есть значение, и оператор case просто возвращает NULL для каждого, не совпадающего с customfieldid.
2 00007 NULL NULL
2 00007 NULL NULL
2 00007 NULL NULL
2 00007 NULL NULL
2 00007 NULL NULL
2 00007 Comp1 NULL
2 00007 NULL 1234
2 00007 NULL NULL
2 00007 NULL NULL
Вот мой желаемый результат:
2 00007 Comp1 1234
Использование where или group by исключает некоторые данные, поскольку они находятся в разных строках.Это возможно?У меня есть 48 настраиваемых полей, которые вы можете добавить, так что вы можете себе представить, что правильное его выполнение сэкономит много работы.
Спасибо!
Редактируйте, чтобы добавить образцы данных из customvarcharlong:
+--------+---------------+-------+----------+
| id | customFieldId | info | recordId |
+--------+---------------+-------+----------+
| 170887 | 171 | N | 1481 |
| 170888 | 172 | 3.03 | 1481 |
| 170889 | 173 | new | 1481 |
| 170890 | 170 | 0 | 1481 |
| 170891 | 5 | 0 | 1481 |
| 170892 | 6 | OEM1 | 1481 |
| 170893 | 7 | Num1 | 1481 |
| 170894 | 200 | 4184 | 1481 |
| 170895 | 120 | Truck | 1481 |
+--------+---------------+-------+----------+
Как вы, вероятно, можете сказать, проблема в том, что рекордный повтор повторяется, поскольку существует много значений настраиваемых полей, и настраиваемый идентификатор повторяется для каждого идентификатора записи.Я хотел бы получить информационное значение для каждой строки в своем собственном столбце для каждого показателя записи (recordid = productid).