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

Sql 将一行拆分为两行

Sql 将一行拆分为两行,sql,Sql,如何在SQL中将一行拆分为两行 假设我有专栏 Name, Time, Model 我有一行,比如2010年1:00“尼克”。此外,模型可以是2010年或2012年 我怎样才能使它成为我能拥有的呢 'Nick', NULL, 2012 'Nick', 1:00, 2010 而不仅仅是一排。基本上,我需要对表中的所有行执行类似的操作,在表中,我们列出了没有作为新行列出的模型,并在date部分下使用空值 谢谢 这也在起作用。如果需要,您可以在价值列表中添加更多年份,如(2011年),(2013年)

如何在SQL中将一行拆分为两行

假设我有专栏

Name, Time, Model
我有一行,比如2010年1:00“尼克”。此外,模型可以是2010年或2012年

我怎样才能使它成为我能拥有的呢

'Nick', NULL, 2012
'Nick', 1:00, 2010
而不仅仅是一排。基本上,我需要对表中的所有行执行类似的操作,在表中,我们列出了没有作为新行列出的模型,并在date部分下使用空值


谢谢

这也在起作用。如果需要,您可以在价值列表中添加更多年份,如(2011年),(2013年),以获得这些年份的预期结果

SELECT  name,
        CASE q.id WHEN 1 THEN time END time,
        CASE q.id WHEN 1 THEN model ELSE '2012' END model
FROM    (
        SELECT  1
        UNION ALL
        SELECT  2
        ) q (id)
CROSS JOIN
        mytable
(示例数据类型可能与您的不同)


请提供样品数据。我不清楚,你的问题。你的模型是逗号分隔的年份?也许可以将表的
联合到自身中?这很好,但我可以看到这是一个性能上的打击,因为它使用了交叉连接(实际上我正在尝试对更大的数据集做一些事情)。我想我会亲自尝试一下,看看会发生什么。
select name, 
       case when t1.model = t2.year then t1.time end time,
       year 
from temp t1
   cross join (values (2010),(2012)) as t2(year)
order by t2.year desc

| NAME |     TIME | YEAR |
--------------------------
| Nick | 01:00:00 | 2010 |
| Nick |   (null) | 2012 |