首页 > 解决方案 > 填充每个类别的值列表

问题描述

我提取下表:

SELECT NAME FROM TABLE

  NAME
  A-1
  A-1
  A-1
  A-2
  A-2
  A-2
  A-2

我有值列表

['value_1', 'value_2', 'value_3', 'value_4', 'value_5',]

应该为每个唯一名称填充:

  NAME   VALUES
  A-1  value_1
  A-1  value_2
  A-1  value_3
  A-1  value_4
  A-1  value_5
  A-2  value_1
  A-2  value_2
  A-2  value_3
  A-2  value_4
  A-2  value_5

如何在 SQL 中完成?VALUES作为常量输入,而不是从任何其他表中输入

标签: sqlsql-server

解决方案


如果值列表实际上包含在另一个表中,那么交叉连接将在这里工作:

SELECT
    n.name,
    v.value
FROM names n
CROSS JOIN vals v
ORDER BY
    n.name,
    v.value;

数据:

WITH names AS (
    SELECT 'A-1' AS name UNION ALL
    SELECT 'A-2'
),
vals AS (
    SELECT 'value_1' AS value UNION ALL
    SELECT 'value_2' UNION ALL
    SELECT 'value_3' UNION ALL
    SELECT 'value_4' UNION ALL
    SELECT 'value_5'
)

演示


推荐阅读