2013-04-10 2 views
1

Я искал ответы, но оказался более смущенным. Я не такой опытный, но с небольшим персоналом - и только я создаю отчеты - я должен это создать.Несколько выборок в хранимой процедуре с использованием объединения - Noob

Клиент запросил отчет, который вернет ответы MTD по вопросам опроса, которые хранятся в 2 базах данных. Проблема в том, что им нужны записи, прикрепленные к каждому представленному ответу, которые не являются частью опроса. то есть каждый ответчик имеет информацию о том, какой тип телефона у них есть, область, в которой они живут, модель телефона и дни обслуживания. (это не ответы)

Многие из них уникальны. (Модели и города)

Так, например, я создал хранимую процедуру в SQL, чтобы вывести ее в SSRS для отображения результатов.

Но каждый из них является избранным, и я получаю только первый результат. Я попытался добавить UNION ALL, но, похоже, это не позволяет мне группировать их, когда я это делаю. Я получаю все в одном столбце, где мне нужны они в отдельных столбцах - идеально в горизонтальном направлении. Но это может быть слишком много.

Вот пример - возможно, есть более быстрый путь - это чудовищный проект, и мой крайний срок заканчивается - и я пробовал так много вещей - и искал. Ничего не оставалось делать, кроме как попросить о помощи.

Так вот, что у меня есть -

ALTER PROCEDURE [dbo].[TEST_WIRELESS_DISCO_SURVEY_RESULTS] 
(
    @STARTDATE DATETIME, 
    @ENDDATE DATETIME 
) 
AS 
BEGIN 
    SELECT 
     a.CUSTOM17 as 'Make', COUNT(ISNULL(A.custom17, 0)) as 'Total Make' 
    FROM GCI_SURVEYS as a 
    JOIN GCI_Post_Survey_PreRepair_Master as b ON a.CustAcctNo = b.CustAcctNo 
    WHERE b.Trans_Date between @STARTDATE and @ENDDATE 
    AND a.i3_rowid = 'GCI_WRLSDISC_BSV' 
    AND a.Q01 = 'no' 
    GROUP BY CUSTOM17 

    UNION ALL 

    SELECT 
     a.CUSTOM22 as 'Market', COUNT(ISNULL(a.CUSTOM22, 0)) as 'Total Market' 
    FROM GCI_SURVEYS as a 
    JOIN GCI_Post_Survey_PreRepair_Master as b ON a.CustAcctNo = b.CustAcctNo 
    WHERE b.Trans_Date between @STARTDATE and @ENDDATE 
    AND a.i3_rowid = 'GCI_WRLSDISC_BSV' 
    AND a.Q01 = 'no' 
    GROUP BY a.CUSTOM22 
+0

может показать, какой результат получить после этого запроса –

+0

Попробуйте использовать соединение вместо объединения. –

+0

Не могли бы вы привести пример этого, пожалуйста? –

ответ

0

В Вопрос вы заявили, что вы выборки данных из двух базы данных

возвращение MTD ответы на вопросы анкеты, которые хранятся в 2 базах данных

В вас SP вы Выбор из равно DB

Просто добавьте Database Имя в одном из ваших Select Query

+0

Прошу прощения, я оговорился - это та же база данных - я имел в виду 2 стола. – user2264725

0

Из ваших объяснений, я думаю, что верхняя часть союза и нижней содержат одни и те же опросы, только разные части?

Я лично загрузил их в переменные таблицы (или, если много записей, темпоральные таблицы), а затем объединить их вместе.

DECLARE @MakeQuestion TABLE 
(
    survery_id INT --datatype 
,make  VARCHAR(200) --replace with your own 
,total_make INT 
) 

INSERT INTO @MakeQuestion 
SELECT a.join_condition, a.CUSTOM17 as 'Make',COUNT(ISNULL(A.custom17,0)) as 'Total Make' 
FROM GCI_SURVEYS as a 
JOIN GCI_Post_Survey_PreRepair_Master as b 
ON a.CustAcctNo = b.CustAcctNo 
WHERE b.Trans_Date between @STARTDATE and @ENDDATE 
AND a.i3_rowid = 'GCI_WRLSDISC_BSV' 
AND a.Q01 = 'no' 
GROUP BY a.join_condition,CUSTOM17 

DECLARE @MarketQuestion TABLE 
(
    survery_id INT -- datatype 
,market  VARCHAR(200) --replace with your own 
,total_market INT 
) 

Insert INTO @MarketQuestion 
SELECT a.join_condition, a.CUSTOM22 as 'Market',COUNT(ISNULL(a.CUSTOM22,0)) as 'Total Market' 
FROM GCI_SURVEYS as a 
JOIN GCI_Post_Survey_PreRepair_Master as b 
ON a.CustAcctNo = b.CustAcctNo 
WHERE b.Trans_Date between @STARTDATE and @ENDDATE 
AND a.i3_rowid = 'GCI_WRLSDISC_BSV' 
AND a.Q01 = 'no' 
GROUP BY a.CUSTOM22 

SELECT * 
FROM @MakeQuestion Make 
INNER JOIN @MarketQuestion Market ON Make.survey_id = Market.survery_id 

Пожалуйста, дайте мне знать, если я неправильно понял.

+0

О, ничего себе, хорошо, я дам это и посмотрю, что произойдет. Спасибо! – user2264725

+0

Есть ли способ получить все выборки для создания отдельных столбцов? Как обертка? Я пробовал примеры, но он продолжает просить объявить скалярную переменную. Союз просто дает его в одном столбце. – user2264725

 Смежные вопросы

  • Нет связанных вопросов^_^