SSMS 中是否存在没有匹配 WHERE 子句的多列 UNPIVOT 函数?
Is there a function for multiple column UNPIVOT without a matching WHERE clause in SSMS?
我有一个类似于下面的数据集:
ID Key
Indicator 1
Indicator 1 Value
Indicator 2
Indicator 2
Indicator 3
Indicator 3 Value
etc...
ID###
Apples
TRUE
Pears
FALSE
Oranges
null
etc...
ID###
Oranges
TRUE
Pears
FALSE
APPLES
null
etc...
ID###
PEARS
TRUE
APPLES
FALSE
ORANGES
null
etc...
我已经能够成功地将指标名称反透视到一个列中,但是我的困难是将指标值与指标名称适当匹配。是否有一个 WHERE 语句允许我在列名之间进行 grep 以取消透视或可以帮助我对此进行排序的类似操作?有问题的数据集来自一个 XML 集,可以解释异常。
在 SQL 服务器中我只使用 APPLY
SELECT
your_table.id_key,
exploded.indicator,
exploded.val
FROM
your_table
CROSS APPLY
(
VALUES
(indicator_1, indicator_1_value),
(indicator_2, indicator_2_value),
...
(indicator_n, indicator_n_value)
)
AS exploded(indicator, val)
WHERE
exploded.indicator IS NOT NULL
其他 DBMS 具有类似的功能,例如横向连接。
我有一个类似于下面的数据集:
ID Key | Indicator 1 | Indicator 1 Value | Indicator 2 | Indicator 2 | Indicator 3 | Indicator 3 Value | etc... |
---|---|---|---|---|---|---|---|
ID### | Apples | TRUE | Pears | FALSE | Oranges | null | etc... |
ID### | Oranges | TRUE | Pears | FALSE | APPLES | null | etc... |
ID### | PEARS | TRUE | APPLES | FALSE | ORANGES | null | etc... |
我已经能够成功地将指标名称反透视到一个列中,但是我的困难是将指标值与指标名称适当匹配。是否有一个 WHERE 语句允许我在列名之间进行 grep 以取消透视或可以帮助我对此进行排序的类似操作?有问题的数据集来自一个 XML 集,可以解释异常。
在 SQL 服务器中我只使用 APPLY
SELECT
your_table.id_key,
exploded.indicator,
exploded.val
FROM
your_table
CROSS APPLY
(
VALUES
(indicator_1, indicator_1_value),
(indicator_2, indicator_2_value),
...
(indicator_n, indicator_n_value)
)
AS exploded(indicator, val)
WHERE
exploded.indicator IS NOT NULL
其他 DBMS 具有类似的功能,例如横向连接。