1

私は答えを探しましたが、もっと混乱しています。私は経験豊富ではありませんが、スタッフが少なく、レポートを作成するのは私だけです。これを作成する必要があります。

クライアントは、2 つのデータベースに保存されている調査の質問に対する MTD 回答を返すレポートを要求しました。問題は、調査の一部ではない、送信された各回答に添付されるレコードが必要なことです。つまり、各回答者は、所有している電話の種類、住んでいる地域、電話のモデル、およびサービスの日数に関する情報を持っています。(ただし、これらは答えではありません)

それらの多くはユニークです。(モデルと都市)

たとえば、SQL でストアド プロシージャを作成し、SSRS にプルして結果を表示しました。

しかし、それぞれが選択であり、最初の結果しか得られません。追加しようとしましUNION ALLたが、これを行うとグループ化できないようです。私はすべてを1つの列に入れますが、必要に応じて別々の列に入れます-理想的には水平に。しかし、それはあまりにも多くを求めているかもしれません。

これは例です - おそらくもっと速い方法があります - これは巨大なプロジェクトです - そして私の締め切りは今迫っています - そして私は非常に多くのことを試しました - そして検索。やるべきことは何も残っていませんが、助けを求めてください。

だからここに私が持っているものがあります -

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
4

2 に答える 2

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

誤解した場合はお知らせください。

于 2013-04-10T06:38:22.427 に答える