【发布时间】:2013-04-10 06:22:02
【问题描述】:
我一直在寻找答案,但发现自己更加困惑。我没有那么有经验 - 但员工人数很少 - 只有我创建报告 - 我必须创建这个。
客户要求提供一份报告,该报告将返回关于存储在 2 个数据库中的调查问题的 MTD 答案。问题是 - 他们想要附加到每个提交的答案的记录,而不是调查的一部分。即每个受访者都有关于他们拥有的电话类型、居住区域、电话型号和服务天数的信息。 (虽然这些不是答案)
其中许多都是独一无二的。 (模型和城市)
例如,我在 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
【问题讨论】:
-
你能显示你在这个查询后得到的结果吗
-
尝试使用join而不是union。
-
你能举个例子吗?
-
运行后我得到以下 -
-
运行后我得到以下信息 - 抱歉,这里的列没有排列(下) Make Total Make Apple 4 BLACKBERRY 4 COAM 11 LG 5 MOTOROLA 13 Nokia 3 Samsung 26 Verykool 7 Anchorage 38 Barrow 1 Bethel 10 Dillingham 3 Fairbanks 8 Juneau 2 Ketchikan 1 Kodiak 1 Kotzebue 1 Mat-Su 7 Nome Borough(减去 Nome)1 Wade Hampton 5
标签: sql-server stored-procedures reporting-services union