これが私が欲しい擬似コードです。次のステートメントで拳の組合の数を取得する必要があります。
SELECT *
FROM Table1
UNION
SELECT Cats.Id + (SELECT COUNT(*) FROM Fist_Union_Result),
Cats.Name
FROM Table2
何か案が ?
これが私が欲しい擬似コードです。次のステートメントで拳の組合の数を取得する必要があります。
SELECT *
FROM Table1
UNION
SELECT Cats.Id + (SELECT COUNT(*) FROM Fist_Union_Result),
Cats.Name
FROM Table2
何か案が ?
最初の部分が複雑なクエリであると仮定すると、with
句を使用してエイリアスを作成できます。それはあなたが2つの場所でそれを使うことを可能にします、組合の上部とあなたが数える場所:
; with FirstPart as
(
select *
from Table1
)
select *
from FirstPart
union all
select cats.Id - cnt.cnt
, cats.Name
from Table2 cats
cross join
(
select count(*) as cnt
from FistPart
) as cnt
一意のIDが必要な場合はunion
、サブクエリにを配置して、行に1..Nのラベルを付けることができます。
select row_number() over (order by Name) as Id
, Name
from (
select Name
from Table1
union all
select Name
from Table2
) as SubQueryAlias
このようなもの:
with first_union_result as (
select col1,
col2
from table1
), count_from_first as (
select count(*) as first_count
from first_union_result
)
select col1,
col2
from first_union_result
union all
select cats.id + cnt.first_count,
cats.name
from cats
cross join count_from_first as cnt;
row_number()
全体的な結果に一意のIDなどを取得しようとしている場合は、すべての行に対してそれを生成するために使用する方がよい場合があります。