Я работаю с разработчиком Business Objects над созданием нового отчета. Он хочет, чтобы я создал представление, которое он может запросить. Моя проблема в том, что я успешно создал Query и проверил, что он работает, но когда я использую его / слегка изменяю его для создания представления, он не возвращает правильные результаты. Итак, мой вопрос состоит из двух частей:
1. Чего мне не хватает? Почему мое представление не возвращает те же результаты, что и мой запрос?
2. Кто-нибудь знаком с Business Objects и можно ли настроить мой запрос в Business Objects? Наш разработчик Business Objects утверждает, что это невозможно сделать.
Вот мой SQL-запрос, который работает. Обратите внимание на следующее:
- По сути, это Союз, в котором я исключаю записи из второй части Союза, если в первой части уже существует соответствующая запись (на основе моего ключа).
- Существует ОДИН входной параметр, LOT, который используется три раза.
- Обе части Союза запрашивают мнения. Это не должно иметь значения.
SELECT [Lot]
,[Qty]
,[MOP]
,[MOP Revision]
,[G_MOP]
,[G_MOP Revision]
,[Scrap Code]
,[MOP Threshold]
,[Txn Date]
,[Qty Built]
,[Catalog]
,[Comments]
FROM [MES_QAS].[MES].[V_BOBJ_SCRAP_MOP_HISTORY]
where lot = 'TF1_80400_QA7'
UNION
(SELECT [Lot]
,[Qty]
,[MOP]
,[MOP Revision]
,[G_MOP]
,[G_MOP Revision]
,[Scrap Code]
,[MOP Threshold]
,[Txn Date]
,[Qty Built]
,[Catalog]
,[Comments]
FROM [MES_QAS].[MES].[V_BOBJ_NO_SCRAP_ALL_MOP_HISTORY]
where lot = 'TF1_80400_QA7'
AND [LOT]+IsNull([MOP],[G_MOP]) NOT IN (SELECT [Lot] + IsNull([MOP],[G_MOP]) FROM [MES].[V_BOBJ_SCRAP_MOP_HISTORY] where lot = 'TF1_80400_QA7')
)
ORDER BY Lot, mop, g_mop
Затем я создал вид следующим образом (я выделил LOT в качестве параметра):
CREATE VIEW [MES].[V_BOBJ_SCRAP_ALL_MOP_HISTORY] (
"Lot"
,"Qty"
,"MOP"
,"MOP Revision"
,"G_MOP"
,"G_MOP Revision"
,"Scrap Code"
,"MOP Threshold"
,"Txn Date"
,"Qty Built"
,"Catalog"
,"Comments"
)
AS
(
(
SELECT [Lot]
,[Qty]
,[MOP]
,[MOP Revision]
,[G_MOP]
,[G_MOP Revision]
,[Scrap Code]
,[MOP Threshold]
,[Txn Date]
,[Qty Built]
,[Catalog]
,[Comments]
FROM [MES].[V_BOBJ_SCRAP_MOP_HISTORY] H1
)
UNION
(
SELECT [Lot]
,[Qty]
,[MOP]
,[MOP Revision]
,[G_MOP]
,[G_MOP Revision]
,[Scrap Code]
,[MOP Threshold]
,[Txn Date]
,[Qty Built]
,[Catalog]
,[Comments]
FROM [MES].[V_BOBJ_NO_SCRAP_ALL_MOP_HISTORY] A
WHERE [LOT]+IsNull([MOP],[G_MOP]) NOT IN (SELECT [Lot] + IsNull([MOP],[G_MOP]) FROM [MES].[V_BOBJ_SCRAP_MOP_HISTORY] H2)
)
)
;
Так вот в чем проблема: когда я запускаю следующий запрос, я не получаю правильные результаты обратно - я получаю результаты только из верхней части Союза, а не из нижней:
SELECT * FROM [MES].[V_BOBJ_SCRAP_ALL_MOP_HISTORY]
where lot = 'TF1_80400_QA7'
Опять же, два моих вопроса:
1. Чего мне не хватает - почему не работает мой взгляд? Есть ли способ это исправить?
2. Можно ли смоделировать мой первый запрос в Business Objects?
Брайан Палмер,
Лейквуд, Колорадо