SQL Server 2008查询-表联接

用户名

我无法从SQL Server 2008查询中获得所需的结果。查询1产生我想要的[GeneralErrors]结果,而查询2产生正确的[RehabErrors]结果,但是我确实需要它们都在同一行上。当我尝试在查询3中合并这两个查询时,我的[GeneralErrors]结果不正确,但以我要查询的方式出现。

查询1:

SELECT
        ReviewID, 
        SUM(CASE Score_CorrectID_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_ProperlyIdentified_Accuracy WHEN 'Error' THEN 1 ELSE 0 END) AS GeneralErrors
    FROM  
        Reviews
    WHERE 
        (UserID IS NOT NULL AND UserID <> '')
    GROUP BY 
        Reviews.ReviewID

Results:

ReviewID    GeneralErrors
7           0
8           0
9           0
10          0
11          0
12          9
13          0
14          0
15          4

查询2:

SELECT 
         Reviews.ReviewID
        ,COUNT(RehabMetricsCalls.ReviewID) AS RehabErrors
    FROM    RehabMetrics INNER JOIN
             RehabMetricsCalls ON RehabMetrics.RehabMetricID = RehabMetricsCalls.RehabMetricID RIGHT OUTER JOIN
             Reviews ON RehabMetricsCalls.ReviewID = Reviews.ReviewID   
    WHERE 
        (UserID IS NOT NULL AND UserID <> '')
    GROUP BY 
        Reviews.ReviewID

Results:

ReviewID    RehabErrors
7           3
8           0
9           0
10          0
11          0
12          5
13          5
14          0
15          4

查询3:我尝试将两个查询结合使用,从而产生不正确的结果

SELECT DISTINCT 
        Reviews.ReviewID
        ,SUM(CASE Score_CorrectID_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_ProperlyIdentified_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_MiniMiranda_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_Tone_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_Accuracy_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_Notepad_Accuracy WHEN 'Error' THEN 1 ELSE 0 END +        
        CASE Score_PCAResponsive_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Score_AWGInfo_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
        CASE Complaint_Accuracy WHEN 'Error' THEN 1 ELSE 0 END) AS GeneralErrors
        ,COUNT(RehabMetricsCalls.ReviewID) AS RehabErrors
    FROM    RehabMetrics INNER JOIN
             RehabMetricsCalls ON RehabMetrics.RehabMetricID = RehabMetricsCalls.RehabMetricID INNER JOIN
             Reviews ON RehabMetricsCalls.ReviewID = Reviews.ReviewID   
    WHERE 
        (UserID IS NOT NULL AND UserID <> '')
    GROUP BY 
        Reviews.ReviewID

所需结果:

ReviewID    GeneralErrors   RehabErrors
    7           0               3
    12          45              5
    13          0               5
    15          16              4
Gameiswar

参加。

;with Firstquery  as
(
SELECT
 ReviewID, 
 SUM(CASE Score_CorrectID_Accuracy WHEN 'Error' THEN 1 ELSE 0 END + 
CASE Score_ProperlyIdentified_Accuracy WHEN 'Error' THEN 1 ELSE 0 END) AS GeneralErrors
 FROM  
 Reviews
 WHERE 
(UserID IS NOT NULL AND UserID <> '')
 GROUP BY 
Reviews.ReviewID
)
,Secondquery as
(
SELECT 
  Reviews.ReviewID
 ,COUNT(RehabMetricsCalls.ReviewID) AS RehabErrors
FROM    RehabMetrics INNER JOIN
   RehabMetricsCalls ON RehabMetrics.RehabMetricID = RehabMetricsCalls.RehabMetricID RIGHT OUTER JOIN
 Reviews ON RehabMetricsCalls.ReviewID = Reviews.ReviewID   
 WHERE 
 (UserID IS NOT NULL AND UserID <> '')
 GROUP BY 
  Reviews.ReviewID
)
select 
fs.reviewid,fs.generalerrors,sq.rehaberrors
from
firstquery fs
join
secondquery sq
on fs.reviewid=sq.reviewid

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自联接SQL Server 2008中的表

来自分类Dev

基于查询表的SQL Server内部联接

来自分类Dev

更改SQL Server 2008的表查询计划

来自分类Dev

SQL Server 2008:使用内部联接的查询性能

来自分类Dev

联接查询等效于Not IN子句(SQL Server 2008)

来自分类Dev

SQL Server 2008:使用内部联接的查询性能

来自分类Dev

SQL Server 2008联接类型用于4个表

来自分类Dev

SQL表联接查询

来自分类Dev

联接表中子查询中的SQL Server 2012最大日期

来自分类Dev

SQL Server-表和Where IN查询之间的联接

来自分类Dev

SQL Server查询联接两个表

来自分类Dev

查询以更改SQL Server 2008中的表排序规则

来自分类Dev

在查询结果中显示表名称;SQL Server 2008

来自分类Dev

从联接SQL Server创建表

来自分类Dev

SQL Server跨表联接

来自分类Dev

sql查询联接条件与联接表

来自分类Dev

SQL查询联接多个表

来自分类Dev

在 SQL Server 2016 上查询系统表 EXTENDED_PROPERTIES 比 SQL Server 2008 慢得多

来自分类Dev

在联接查询SQL Server 2008中选择最后5行

来自分类Dev

SQL Server 联接表和总和表

来自分类Dev

在SQL Server 2008中联接多个表会导致错误

来自分类Dev

如何在SQL Server 2008中将行更改为列(多个表,联接等)

来自分类Dev

根据SQL Server 2008中用户定义的参数联接表和groupby结果

来自分类Dev

如何使用SQL查询在SQL SERVER 2008 R2中获得表定义?

来自分类Dev

SQL Server 2008 R2使用SQL查询引用表的聚集索引

来自分类Dev

使用查询将SQL Server 2008表导出到Excel工作表

来自分类Dev

SQL Server 2008中的循环联接

来自分类Dev

SQL Server 2008联接,联合,多项选择?

来自分类Dev

为什么SQL Server的查询优化器将表与其自身联接?

Related 相关文章

热门标签

归档