Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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_Temporary Objects - Fatal编程技术网

Sql 在桌子(或其他优雅的解决方案)的位置使用一套

Sql 在桌子(或其他优雅的解决方案)的位置使用一套,sql,temporary-objects,Sql,Temporary Objects,我回答了一个问题,其中我必须动态生成一个临时派生表(或使用实际表),请参见: 而不是使用以下派生表(使用select和union): 在: SELECT GROUP_CONCAT(CASE WHEN COLUMN1 IS NULL THEN "NULL" ELSE COLUMN1 END) FROM archive RIGHT OUTER JOIN (SELECT 21 AS id UNION SELECT 22) AS tmp ON tmp.id=archive.column2; 我更希

我回答了一个问题,其中我必须动态生成一个临时
派生表(或使用实际表),请参见:

而不是使用以下派生表(使用select和union):

在:

SELECT GROUP_CONCAT(CASE WHEN COLUMN1 IS NULL THEN "NULL" ELSE COLUMN1 END)
FROM archive
RIGHT OUTER JOIN
  (SELECT 21 AS id UNION SELECT 22) AS tmp ON tmp.id=archive.column2;
我更希望能够使用更优雅的东西,例如:

  ([[21],[22]]) AS tmp
在任何SQL数据库或任何类似功能中都有这样的标记吗?是否有一种简单的方法可以使用
集合
代替
表格
(当我说
集合
时,我指的是一维值列表),就像我们在
中使用
一样

因此,使用这种表示法,具有1个int列的临时表和具有2行的1个string列将具有:

([[21,'text here'],[22,'text here2']]) AS tmp

SQL Server允许以下语法:

SELECT A, B, C,
 CASE WHEN D < 21 THEN ' 0-20'
      WHEN D < 51 THEN '21-50'
      WHEN D < 101 THEN '51-100'
      ELSE '>101' END AS E
 ,COUNT(*) as "Count"
 FROM  (
    values ('CAR', 1,2,22)
          ,('CAR', 1,2,23)
          ,('BIKE',1,3,2)
)TABLE_X(A,B,C,D)

GROUP BY A, B, C, 
 CASE WHEN D < 21 THEN ' 0-20'
      WHEN D < 51 THEN '21-50'
      WHEN D < 101 THEN '51-100'
      ELSE '>101' END
SELECT A, B, C,
 CASE WHEN D < 21 THEN ' 0-20'
      WHEN D < 51 THEN '21-50'
      WHEN D < 101 THEN '51-100'
      ELSE '>101' END AS E
 ,COUNT(*) as "Count"
 FROM  (
    values ('CAR', 1,2,22)
          ,('CAR', 1,2,23)
          ,('BIKE',1,3,2)
)TABLE_X(A,B,C,D)

GROUP BY A, B, C, 
 CASE WHEN D < 21 THEN ' 0-20'
      WHEN D < 51 THEN '21-50'
      WHEN D < 101 THEN '51-100'
      ELSE '>101' END
A    B           C           E      Count
---- ----------- ----------- ------ -----------
BIKE 1           3            0-20  1
CAR  1           2           21-50  2