Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 每个记录都有一个新行_Sql_Sql Server 2012 - Fatal编程技术网

Sql 每个记录都有一个新行

Sql 每个记录都有一个新行,sql,sql-server-2012,Sql,Sql Server 2012,我希望结果在满足条件的每个实例中生成一个新行。我使用的是CASE语句,但这不是方法,因为一旦满足第一个条件,它就会停止对字段的求值 SELECT Reviews.ReviewID, CASE WHEN Score_CorrectID = 0 THEN 'Correct ID Right Party Authentication' WHEN Score_ProperlyIdentified = 0 THEN 'PCA Properly Identified Itself'

我希望结果在满足条件的每个实例中生成一个新行。我使用的是CASE语句,但这不是方法,因为一旦满足第一个条件,它就会停止对字段的求值

SELECT 
Reviews.ReviewID, 
CASE 
    WHEN Score_CorrectID = 0 THEN 'Correct ID Right Party Authentication'  
    WHEN Score_ProperlyIdentified = 0 THEN 'PCA Properly Identified Itself'
    WHEN Score_MiniMiranda = 0 THEN 'Mini-Miranda'          
END AS [Error Type] 
FROM Reviews INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID LEFT JOIN 
PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE 
 (Score_CorrectID = 0 OR Score_ProperlyIdentified = 0 OR Score_MiniMiranda = 
0)
这就产生了:

我想这样:


您可以使用
联合所有
而不是使用
案例

SELECT 
    Reviews.ReviewID, 
    'Correct ID Right Party Authentication' AS [Error Type] 
FROM Reviews 
    INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID 
    LEFT JOIN PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE Score_CorrectID = 0 
UNION ALL
SELECT 
    Reviews.ReviewID, 
    'PCA Properly Identified Itself' AS [Error Type] 
FROM Reviews 
    INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID 
    LEFT JOIN PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE Score_ProperlyIdentified = 0 
UNION ALL
SELECT 
    Reviews.ReviewID, 
    'Mini-Miranda' AS [Error Type] 
FROM Reviews 
    INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID 
    LEFT JOIN PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE Score_MiniMiranda = 0 

您可以使用
union all
代替
case

SELECT 
    Reviews.ReviewID, 
    'Correct ID Right Party Authentication' AS [Error Type] 
FROM Reviews 
    INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID 
    LEFT JOIN PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE Score_CorrectID = 0 
UNION ALL
SELECT 
    Reviews.ReviewID, 
    'PCA Properly Identified Itself' AS [Error Type] 
FROM Reviews 
    INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID 
    LEFT JOIN PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE Score_ProperlyIdentified = 0 
UNION ALL
SELECT 
    Reviews.ReviewID, 
    'Mini-Miranda' AS [Error Type] 
FROM Reviews 
    INNER JOIN PCAs ON Reviews.PCAID = PCAs.PCAID 
    LEFT JOIN PCARebuttal ON Reviews.ReviewID = PCARebuttal.ReviewID 
WHERE Score_MiniMiranda = 0 

使用
应用

SELECT r.ReviewID, v.error_type
FROM Reviews r INNER JOIN
     PCAs
     ON r.PCAID = PCAs.PCAID LEFT JOIN 
     PCARebuttal pr
     ON r.ReviewID = pr.ReviewID OUTER APPLY
     (SELECT *
      FROM (VALUES (Score_CorrectID, 'Correct ID Right Party Authentication'),  
                   (Score_ProperlyIdentified, 'PCA Properly Identified Itself'),
                   (Score_MiniMiranda, 'Mini-Miranda')
           ) v(score, error_type)
      WHERE score = 0
     ) v        
WHERE (Score_CorrectID = 0 OR Score_ProperlyIdentified = 0 OR Score_MiniMiranda = 0);
也就是说,我可能只是将这些值连接到一个列中:

SELECT r.ReviewID,
       ( (CASE WHEN Score_CorrectID = 0 THEN 'Correct ID Right Party Authentication; ' ELSE '' END) +  
         (CASE WHEN Score_ProperlyIdentified = 0 THEN 'PCA Properly Identified Itself; ' ELSE '' END) +
         (CASE WHEN Score_MiniMiranda = 0 THEN 'Mini-Miranda;' ELSE '' END)
       ) as error_types
FROM Reviews r INNER JOIN
     PCAs
     ON r.PCAID = PCAs.PCAID LEFT JOIN 
     PCARebuttal pr
     ON r.ReviewID = pr.ReviewID OUTER APPLY
     (SELECT *
      FROM (VALUES ()
           ) v(score, error_type)
      WHERE score = 0
     ) v        
WHERE (Score_CorrectID = 0 OR Score_ProperlyIdentified = 0 OR Score_MiniMiranda = 0);

使用
应用

SELECT r.ReviewID, v.error_type
FROM Reviews r INNER JOIN
     PCAs
     ON r.PCAID = PCAs.PCAID LEFT JOIN 
     PCARebuttal pr
     ON r.ReviewID = pr.ReviewID OUTER APPLY
     (SELECT *
      FROM (VALUES (Score_CorrectID, 'Correct ID Right Party Authentication'),  
                   (Score_ProperlyIdentified, 'PCA Properly Identified Itself'),
                   (Score_MiniMiranda, 'Mini-Miranda')
           ) v(score, error_type)
      WHERE score = 0
     ) v        
WHERE (Score_CorrectID = 0 OR Score_ProperlyIdentified = 0 OR Score_MiniMiranda = 0);
也就是说,我可能只是将这些值连接到一个列中:

SELECT r.ReviewID,
       ( (CASE WHEN Score_CorrectID = 0 THEN 'Correct ID Right Party Authentication; ' ELSE '' END) +  
         (CASE WHEN Score_ProperlyIdentified = 0 THEN 'PCA Properly Identified Itself; ' ELSE '' END) +
         (CASE WHEN Score_MiniMiranda = 0 THEN 'Mini-Miranda;' ELSE '' END)
       ) as error_types
FROM Reviews r INNER JOIN
     PCAs
     ON r.PCAID = PCAs.PCAID LEFT JOIN 
     PCARebuttal pr
     ON r.ReviewID = pr.ReviewID OUTER APPLY
     (SELECT *
      FROM (VALUES ()
           ) v(score, error_type)
      WHERE score = 0
     ) v        
WHERE (Score_CorrectID = 0 OR Score_ProperlyIdentified = 0 OR Score_MiniMiranda = 0);

请添加您的源数据。是否要将reviews表中的每个review ID与所有三个文本合并?还是只有某些审查ID?任务的具体内容是什么?我希望每个实例都有一个单独的行,其中Score_x字段=0好的。使用多个表时,应使用表名或别名限定所有列。例如,Score_CorrectID位于哪个表中?那桌子的钥匙是什么?每个评论都有一个PCA和多个PCA。但是,PCA和PCARebuttals是否也连接在一起?你选择它们时,就好像有完全不同的东西一样。PCARebuttal是否有您也应该加入的PCAID?请添加您的源数据。是否要将reviews表中的每个review ID与所有三个文本合并?还是只有某些审查ID?任务的具体内容是什么?我希望每个实例都有一个单独的行,其中Score_x字段=0好的。使用多个表时,应使用表名或别名限定所有列。例如,Score_CorrectID位于哪个表中?那桌子的钥匙是什么?每个评论都有一个PCA和多个PCA。但是,PCA和PCARebuttals是否也连接在一起?你选择它们时,就好像有完全不同的东西一样。PCAREBUTAL是否有您也应该加入的PCAID?