Sql 选择一组值作为列,而不创建
我正在尝试编写一个查询,该查询将返回所有查询ID值以及所有匹配的表ID值,其中查询ID未在任何表中指定,并且我无法创建表,因此必须在查询本身中指定:Sql 选择一组值作为列,而不创建,sql,sql-server-2000,Sql,Sql Server 2000,我正在尝试编写一个查询,该查询将返回所有查询ID值以及所有匹配的表ID值,其中查询ID未在任何表中指定,并且我无法创建表,因此必须在查询本身中指定: QUERY_ID TABLE_ID 1 1 2 NULL 3 3 4 4 5 NULL 我觉得应该有一个简单的方法来做到这一点,但我一辈子都想不出来。任何帮助都会很好。谢谢 使用内置主..spt_值表的单向 select q.QUERY_ID
QUERY_ID TABLE_ID
1 1
2 NULL
3 3
4 4
5 NULL
我觉得应该有一个简单的方法来做到这一点,但我一辈子都想不出来。任何帮助都会很好。谢谢 使用内置主..spt_值表的单向
select q.QUERY_ID, t.TABLE_ID
from (
select 1 as QUERY_ID
union all
select 2
union all
select 3
union all
select 4
union all
select 5
) q
left outer join MyTable t on q.QUERY_ID = t.TABLE_ID
SELECT number AS QUERY_ID,TABLE_ID
FROM master..spt_values v
LEFT JOIN YourTable y ON y.QUERY_ID = y.TABLE_ID
WHERE TYPE = 'p'
AND number > 0
AND number <= (SELECT COUNT(*) FROM YourTable)
order by QUERY_ID
还是像这样
select identity(int,1,1) as QUERY_ID,TABLE_ID
into #temp
from YourTable
select * from #temp
order by QUERY_ID
在sql server 2005及更高版本上,有行数函数,因此可能需要升级:-)一种方法,使用内置的master..spt\u values表
SELECT number AS QUERY_ID,TABLE_ID
FROM master..spt_values v
LEFT JOIN YourTable y ON y.QUERY_ID = y.TABLE_ID
WHERE TYPE = 'p'
AND number > 0
AND number <= (SELECT COUNT(*) FROM YourTable)
order by QUERY_ID
还是像这样
select identity(int,1,1) as QUERY_ID,TABLE_ID
into #temp
from YourTable
select * from #temp
order by QUERY_ID
在sql server 2005及更高版本上,有行数函数,因此可能需要升级:-)是的,它存在,但我认为只有1024行,不像2005年的2048行,UP3可能已经添加了service pack 3或更多,但不记得了啊,我应该说明我的示例是我真正想做的事情的简化——查询ID是一个非顺序、不连续列表中的7位ID……是的,它存在,但我相信只有1024行,不像2005年的2048行,UP3可能已经添加了service pack 3左右,但我再也不记得了,我应该说明我的示例是我真正想做的事情的简化——查询ID是一个非有序、不连续列表中的7位ID……啊,是的——我对UNION ALL很感兴趣,但我没有把它放在一起。。。谢谢啊,是的,我对工会很感兴趣,但我没有把它放在一起。。。谢谢