Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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_Database Schema - Fatal编程技术网

Sql 为属于一列的固定值集中的每一个值创建一个结果集的习惯用法?

Sql 为属于一列的固定值集中的每一个值创建一个结果集的习惯用法?,sql,database-schema,Sql,Database Schema,详细的标题,但希望很容易用一个例子来演示。假设我有一张像这样的桌子: CREATE TABLE sweaters (colour TEXT, size INTEGER, stock INTEGER); 数据如下所示: red 4 100 red 6 100 red 8 200 black 2 200 black 4 150 black 6 300 对于每种尺码,我想知道我们有多少件红色毛衣,有多少件黑色的。我希望输出像这样: size n_r

详细的标题,但希望很容易用一个例子来演示。假设我有一张像这样的桌子:

    CREATE TABLE sweaters (colour TEXT, size INTEGER, stock INTEGER);
数据如下所示:

red 4   100
red 6   100
red 8   200
black   2   200
black   4   150
black   6   300
对于每种尺码,我想知道我们有多少件红色毛衣,有多少件黑色的。我希望输出像这样:

size    n_red   n_black
2   0   200
4   100 150
6   100 300
SELECT size, 
    SUM(CASE WHEN colour='red' THEN stock ELSE 0 END) as n_red,
    SUM(CASE WHEN colour='black' THEN stock ELSE 0 END) as n_black
FROM sweaters GROUP BY size;
我可以这样做:

size    n_red   n_black
2   0   200
4   100 150
6   100 300
SELECT size, 
    SUM(CASE WHEN colour='red' THEN stock ELSE 0 END) as n_red,
    SUM(CASE WHEN colour='black' THEN stock ELSE 0 END) as n_black
FROM sweaters GROUP BY size;
但这感觉不雅,我发现自己需要做很多。有更好的成语吗


编辑:我应该提到,SQLite是我正在使用的引擎。

你想在颜色上做重点吗?你可以使用连接或联合,但我认为这是更优雅的方法。可能还有其他特定于某些特定数据库的方法(如
pivot
filter
)。