我需要有关查询的帮助,以计算在同一列中选择多个值的时间。
这是主表:
| 识别码|价值观|时间_m|
| - -|- -|- -|
| 小行星32221|第一册;第二册;第三册|二十个|
| 小行星32222|第一册;第二册|十五|
| 小行星32233|第一册|二十个|
我的疑问:
WITH CM as (
SELECT
Main.ID as ID,
case
when Main.value= 'book1' then 5
when Main.value= 'book2' then 8
when Main.value= 'book3' then 2
else null
end AS numb,
time_m as time_m
Main.value
FROM
Main
)
SELECT
CM.ID
,CM.numb
,CM.time_m
,CM.numb * CM.time_m as resu
,CM.value
FROM CM
我得到的:
| 识别码|号码|时间_m|雷苏|
| - -|- -|- -|- -|
| 小行星32221|空值|二十个|空值|
| 小行星32222|空值|十五|空值|
| 小行星32233|五个|二十个|100个|
我所需要的与此类似:
| 识别码|号码|时间_m|雷苏|
| - -|- -|- -|- -|
| 小行星32221|十五|二十个|三百|
| 小行星32222|十三|十五|一百九十五|
| 小行星32233|五个|二十个|100个|
我怎么能那样做呢?
1条答案
按热度按时间tp5buhyn1#
如果您可以使用SQL Server 2016+,只需使用
STRING_SPLIT()
拆分存储的值,将值Map到适当的权重并计算结果: