Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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_Postgresql_Select - Fatal编程技术网

Sql 选择结果集行到列转换

Sql 选择结果集行到列转换,sql,postgresql,select,Sql,Postgresql,Select,我有一个带有列id,story\u id的表,like可以是+1,-1 我希望我的select查询返回以下列:story\u id、total、n\u like、n\u loke,其中total=n\u like+n\u loke不带子查询 我目前正在做一个小组,选择like-as-like\u t,countlike-as-total,这给了我一个如下的输出 -- like_t --+ --- total -- -1 | 2 1 | 6

我有一个带有列id,story\u id的表,like可以是+1,-1 我希望我的select查询返回以下列:story\u id、total、n\u like、n\u loke,其中total=n\u like+n\u loke不带子查询

我目前正在做一个小组,选择like-as-like\u t,countlike-as-total,这给了我一个如下的输出

-- like_t --+ --- total --
    -1      |      2
     1      |      6
并返回结果集中的两行。但是我想要得到的是一行,其中n_like是6,n_love是2,总数是8,首先,like是PostgreSQL中的一个保留字,所以你必须对它进行双引号。也许应该为这个专栏选择一个更好的名字

创建表testbed id int4,story_id int4,如int2; 插入到测试床值中 1,1,'+1',1,1,'+1',1,1,'+1', 1,1,'+1',1,1,'+1',1,1,'+1', 1,1,'-1',1,1,'-1'; 选择 故事编号:, sumCASE当like>0时,则abslike ELSE 0结束为n_like, sumCASE当like<0时,则abslike ELSE 0结束为n_厌恶, countstory\u id作为总计 -对于like字段中的情况+2/-3,请使用以下构造 -总的 从试验台 按故事编号分组;
我使用abslike表示like列中有+2或-3的情况。

是的,实际列名不是like,但问题是+1,-1不是整数,它们是某种枚举类型。所以abs和sum不起作用。只有count会起作用。因此,当like>0时,CASE,然后countlike,否则0结束,因为n_like起作用。感谢更好的用例,当like>0时,n_-like字段将结束1或0。另外,也许最好将值设为数值?如果+1和-1是唯一的可能性,我应该将整个数值集指定给它吗?查询给出了两行,一行表示+like,其中n_like=n和n_lose=0,另一行表示不喜欢,其中n_like=0和n_lose=n,但我希望在一行中出现错误。我刚刚测试了这个查询,它只为每个故事id提供一行。由于按故事id分组,不可能获得更多,除非您修改了初始查询。