ven*_*kat 3 sql t-sql sql-server sql-server-2008
我有一个这样的SQL语句:
编辑:
SELECT
location as Location
FROM
Table1
WHERE
OnsiteOffshore = 'Offshore' AND Acc_Code = 'ABC'
UNION
SELECT
Country
FROM
Table1
WHERE
OnsiteOffshore = 'Onsite' AND Acc_Code = 'ABC'
Run Code Online (Sandbox Code Playgroud)
此SQL查询提供以下结果:
Chennai
Bangalore
USA
NewZealand
Run Code Online (Sandbox Code Playgroud)
但由于一些要求,我需要像这样的输出:
Chennai
Chennai
Chennai
Chennai
Bangalore
Bangalore
Bangalore
Bangalore
USA
USA
USA
USA
NewZealand
NewZealand
NewZealand
NewZealand
Run Code Online (Sandbox Code Playgroud)
意思是说每个位置需要输出4次.
请帮助如何获得相同.
ype*_*eᵀᴹ 12
SELECT Location
FROM Table1
CROSS JOIN
( VALUES (1),(2),(3),(4)
) AS four(dummy)
Run Code Online (Sandbox Code Playgroud)
如果4不是常量但是(因为@xQbert注意/问到)是表的行数,您可以使用:
SELECT a.Location
FROM Table1 AS a
CROSS JOIN
Table1 AS b
Run Code Online (Sandbox Code Playgroud)
如果您没有Table1任何(但是很复杂的)查询,则可以将其用于4个副本:
SELECT Location
FROM (
SELECT Location --- complex query here
... --- inside parenthesis
UNION
SELECT Country
...
) AS Table1
CROSS JOIN
( VALUES (1),(2),(3),(4)
) AS four(dummy)
Run Code Online (Sandbox Code Playgroud)
或者这个n副本:
WITH cte AS
( SELECT Location --- complex query here
... --- inside parenthesis
UNION
SELECT Country
...
)
SELECT a.Location
FROM cte AS a
CROSS JOIN
cte AS b
Run Code Online (Sandbox Code Playgroud)
在任何RDBMS中最简单且(可能)完全接受;-):
select location from (
Select Location From Table1 union all
Select Location From Table1 union all
Select Location From Table1 union all
Select Location From Table1
) t
order by location
Run Code Online (Sandbox Code Playgroud)
使用CTE(通用表格表达式)的更好方法:
;with cte (id) as (
select 1 union all
select id + 1 from cte where id < 4
)
select location from Table1
cross join cte
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8862 次 |
| 最近记录: |