Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Postgresql 根据Postgres中的列值选择_Postgresql - Fatal编程技术网

Postgresql 根据Postgres中的列值选择

Postgresql 根据Postgres中的列值选择,postgresql,Postgresql,我想根据所选的ID获取TIMESTAMP和STRING\u VALUE的值。 假设我选择的ID是42594226和4259 然后,它应该使用CASE语句为所选的ID选择TIMESTAMP和STRING\u VALUE。 我尝试了下面的查询,但返回错误 CREATE TABLE "DRL_FTO3_DI1_A0" ( "VARIABLE" integer, "CALCULATION" integer, "TIMESTAMP_S" integer, "TIMESTAMP_MS" in

我想根据所选的
ID
获取
TIMESTAMP
STRING\u VALUE
的值。 假设我选择的
ID
42594226
4259
然后,它应该使用CASE语句为所选的
ID
选择
TIMESTAMP
STRING\u VALUE
。 我尝试了下面的查询,但返回错误

CREATE TABLE "DRL_FTO3_DI1_A0"
(
  "VARIABLE" integer,
  "CALCULATION" integer,
  "TIMESTAMP_S" integer,
  "TIMESTAMP_MS" integer,
  "VALUE" double precision,
  "STATUS" integer,
  "GUID" character(36),
  "STRVALUE" character varying(50)
)

INSERT INTO "DRL_FTO3_DI1_A0"(
            "VARIABLE", "CALCULATION", "TIMESTAMP_S", "TIMESTAMP_MS", "VALUE", 
            "STATUS", "GUID", "STRVALUE")
    VALUES (4226, 0, 1451120925, 329,0 , 1078067200, '', 'BATCH 1'),
           (4306, 0, 1451120925, 329,0 , 1078067200, '', 'BATCH 2'),
           (4311, 0, 1451120925, 329,0 , 1078067200, '', '2')
现在假设在三个变量(422643064311)中选择4226和4311

SELECT ((TIMESTAMP WITHOUT Time Zone 'epoch' + "TIMESTAMP_S" * INTERVAL '1 second') AT TIME ZONE 'UTC')::TIMESTAMP WITHOUT Time Zone,
SUM(CASE WHEN "VARIABLE" = 4226 Then "STRVALUE" END) as 'A',
SUM(CASE WHEN "VARIABLE" = 4311 Then "STRVALUE" END) as 'B'
FROM "DRL_FTO3_DI1_A0"
GROUP BY "TIMESTAMP_S"
ORDER BY "TIMESTAMP_S";


 TIMESTAMP_S                         A            B
 2015-12-26 14:38:45                BATCH_1       2

这是使用交叉表的查询,它可以正常工作

选择*
从交叉表(
$$选择“变量”、“时间戳”、“标准值”
来自“DRL_FTO3_DI1_A0”
其中“VARIABLE”=任意(数组[43064226])
以1,2的顺序排列$$
) 
作为
t(
“TIMESTAMP_S”整数,
"一个"字,,
“B”字符变化

);crosstab()
函数会做你想做的吗?您能告诉我如何在我的案例中编写交叉表的查询吗?这是我尝试使用交叉表时遇到的问题,但导致错误:从交叉表中选择*('SELECT“VARIABLE”,“TIMESTAMP_S”,“STRVALUE”从“DRL_FTO3_DI1_A0”按2的顺序)作为ct(“TIMESTAMP_S”Integer,“A”text,“B”text);