Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Db2 如何将不同查询的结果合并为一个?_Db2 - Fatal编程技术网

Db2 如何将不同查询的结果合并为一个?

Db2 如何将不同查询的结果合并为一个?,db2,Db2,我在一篇专栏文章中有情绪分析的结果。我想展示每个数字代表的内容和计数,如下所示: Neg | Neutral | Pos ---------+-----+----- 30 | 55 | 100 我在互联网上找到了许多不同的方法,但都没有用。db2语法似乎经常更改,我发现的所有文档在我当前的bluemix帐户上都不起作用 我能得到的最接近的是工会: SELECT COUNT(*) as NEGATIVE FROM C7 WHERE SENTIMENT = 1 u

我在一篇专栏文章中有情绪分析的结果。我想展示每个数字代表的内容和计数,如下所示:

 Neg | Neutral | Pos 
---------+-----+-----
  30 |   55    | 100 
我在互联网上找到了许多不同的方法,但都没有用。db2语法似乎经常更改,我发现的所有文档在我当前的bluemix帐户上都不起作用

我能得到的最接近的是工会:

SELECT  COUNT(*) as NEGATIVE      FROM C7  WHERE SENTIMENT = 1
union
SELECT  COUNT(*) as NEUTRAL       FROM C7  WHERE SENTIMENT = 2
union
SELECT  COUNT(*) as Pos           FROM C7  WHERE SENTIMENT = 3
然而,这给了我:

NEGATIVE
--------
   30
   55
  100
如何将每个查询的结果并排合并


我在DB2中尝试了post-Pivoting的答案,但出现了错误:

SELECT 
  C7.SENTIMENT,
  COUNT(CASE WHEN C7.SENTIMENT = 1 THEN Value END) AS NEGATIVE,
  COUNT(CASE WHEN C7.SENTIMENT = 2 THEN Value END) AS NEUTRAL,
  COUNT(CASE WHEN C7.SENTIMENT = 3 THEN Value END) AS POSITIVE,
FROM C7
GROUP BY C7.SENTIMENT
SQL0206N:SQL0206N“值”在使用它的上下文中无效。SQLSTATE=42703

SQL0206N:SQL0206N“值”在使用它的上下文中无效。SQLSTATE=42703


好的,在重新设计了一些答案之后,我终于得到了我想要的:

SELECT DISTINCT
  (SELECT COUNT(SENTIMENT) FROM C7 WHERE C7.SENTIMENT = 1) AS NEGATIVE,
  (SELECT COUNT(SENTIMENT) FROM C7 WHERE C7.SENTIMENT = 2) AS NEUTRAL,
  (SELECT COUNT(SENTIMENT) FROM C7 WHERE C7.SENTIMENT = 3) AS POSITIVE
FROM C7
这似乎是我徘徊了很长时间,但找不到的东西,因为有些帖子用奇怪的表名和值回答了这个问题

因此,基本上,要使查询彼此相邻,必须使用多个
SELECT
s


另外,请注意,我使用了
DISTINCT
,因为否则它会为我的数据库中的每一行提供相同数据的副本。

可能重复@Clockwork Muse Nope,尝试了所有这些答案,未工作,将更新我的帖子,并说明原因。无论如何,谢谢。它可能认为
VALUE
在这里被用作关键字(因为它是一个保留字,但至少在某些上下文中可以用作列名)。但是,除非您试图引用的内容可以为null,否则您不关心它包含什么,因此可以替换常量值(
1
是最喜欢的)。(根据我的经验,列not found会产生一个不同的异常,因此不太可能由此产生)考虑到,实际上更可能是您正在定义一个新的本地列名(
为value
),您试图使用它,但您的语句中没有包含它。如果您切换到源列,或者只切换到一个常量值,那么现有答案是否有效
DISTINCT
是不必要的,因为如果你要走这条路线,你应该做一些不同的事情,要么把这三个都放到
VALUES
语句中,要么使用伪表(
sysibm.sysdummy1
)给你自己一行。如果您幸运的话,系统能够查看该查询并优化出不同的
,否则您就是在惩罚自己。
SELECT DISTINCT
  (SELECT COUNT(SENTIMENT) FROM C7 WHERE C7.SENTIMENT = 1) AS NEGATIVE,
  (SELECT COUNT(SENTIMENT) FROM C7 WHERE C7.SENTIMENT = 2) AS NEUTRAL,
  (SELECT COUNT(SENTIMENT) FROM C7 WHERE C7.SENTIMENT = 3) AS POSITIVE
FROM C7