我的查询有问题。
消息205,级别16,状态1,行5使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式。
我是基本用户(仍在学习SQL)。
我在这里结合了几个选择我的代码:
我想在FCRR旁边找到类别。
我尝试了很多组合但失败了:(
谢谢您的帮助,
SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR]
,CATEGORY
FROM (
SELECT cast(count(*) AS DECIMAL(5, 2)) AS [FCRR]
,'1 Time' AS [CATEGORY]
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH_NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH_NUMBER]
,YEAR([TICKET_CLOSED]) AS [YEARS]
FROM [PL_Survey]
WHERE [QUESTION6] = '1 Time' AND MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T1
,(
SELECT cast(count(*) AS DECIMAL(5, 2)) AS CASESCOUNT
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH]
,YEAR([TICKET_CLOSED]) AS [YEAR]
FROM [PL_Survey]
WHERE MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T2
UNION ALL
SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR]
FROM (
SELECT cast(count(*) AS DECIMAL(5, 2)) AS [FCRR]
,'2-3 Times' AS [CATEGORY]
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH_NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH_NUMBER]
,YEAR([TICKET_CLOSED]) AS [YEARS]
FROM [PL_Survey]
WHERE [QUESTION6] = '2-3 Times' AND MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T1
,(
SELECT cast(count(*) AS DECIMAL(5, 2)) AS CASESCOUNT
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH]
,YEAR([TICKET_CLOSED]) AS [YEAR]
FROM [PL_Survey]
WHERE MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T2
UNION ALL
SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR]
FROM (
SELECT cast(count(*) AS DECIMAL(5, 2)) AS [FCRR]
,'More than 3 Times' AS [CATEGORY]
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH_NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH_NUMBER]
,YEAR([TICKET_CLOSED]) AS [YEARS]
FROM [PL_Survey]
WHERE [QUESTION6] = 'More than 3 Times' AND MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T1
,(
SELECT cast(count(*) AS DECIMAL(5, 2)) AS CASESCOUNT
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH]
,YEAR([TICKET_CLOSED]) AS [YEAR]
FROM [PL_Survey]
WHERE MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T2
您好B House的评论帮助了我:)
这里的解决方案:
SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR]
,CATEGORY
FROM (
SELECT cast(count(*) AS DECIMAL(5, 2)) AS [FCRR]
,'1 Time' AS [CATEGORY]
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH_NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH_NUMBER]
,YEAR([TICKET_CLOSED]) AS [YEARS]
FROM [PL_Survey]
WHERE [QUESTION6] = '1 Time' AND MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T1
,(
SELECT cast(count(*) AS DECIMAL(5, 2)) AS CASESCOUNT
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH]
,YEAR([TICKET_CLOSED]) AS [YEAR]
FROM [PL_Survey]
WHERE MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T2
UNION ALL
SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR]
,CATEGORY
FROM (
SELECT cast(count(*) AS DECIMAL(5, 2)) AS [FCRR]
,'2-3 Times' AS [CATEGORY]
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH_NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH_NUMBER]
,YEAR([TICKET_CLOSED]) AS [YEARS]
FROM [PL_Survey]
WHERE [QUESTION6] = '2-3 Times' AND MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T1
,(
SELECT cast(count(*) AS DECIMAL(5, 2)) AS CASESCOUNT
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH]
,YEAR([TICKET_CLOSED]) AS [YEAR]
FROM [PL_Survey]
WHERE MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T2
UNION ALL
SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR]
,CATEGORY
FROM (
SELECT cast(count(*) AS DECIMAL(5, 2)) AS [FCRR]
,'More than 3 Times' AS [CATEGORY]
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH_NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH_NUMBER]
,YEAR([TICKET_CLOSED]) AS [YEARS]
FROM [PL_Survey]
WHERE [QUESTION6] = 'More than 3 Times' AND MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T1
,(
SELECT cast(count(*) AS DECIMAL(5, 2)) AS CASESCOUNT
,DATENAME(MONTH, [TICKET_CLOSED]) AS [MONTH NAME]
,MONTH([TICKET_CLOSED]) AS [MONTH]
,YEAR([TICKET_CLOSED]) AS [YEAR]
FROM [PL_Survey]
WHERE MONTH([TICKET_CLOSED]) = @MONTH AND [SUPPORT_GROUP] IN (@SUPPORT_GROUP)
GROUP BY Month([TICKET_CLOSED])
,YEAR([TICKET_CLOSED])
,DATENAME(MONTH, [TICKET_CLOSED])
) AS T2
你的第一个SELECT
有2列,[FCRR]和类别。您尝试SELECT
的另外两个UNION ALL
必须有这两列(或至少相同的数据类型)。两者都缺少与Category列对应的那个。
您可以通过添加默认的硬编码值(SELECT cast(100 * ([FCRR] / CASESCOUNT) AS DECIMAL(5, 2)) AS [FCRR], 0 as Category
)或实际从数据表中选择它们来解决它(如果它对应)。
调试的第一条规则:简化问题。
UNION
ed在一起;首先尝试其中两个的组合,以重新计算您需要查看的金额。