MysqlからSQL Serverへのクエリの移行には多くの問題があります。私は少し複雑ですが、mysqlでうまく動作するこのクエリを持っています。SQL Server select queries union allとlimit
返される行が多いため、テーブル・ユニオンからすべてを選択して、別の表から等しくないか、結果の改ページを行うことができます。私がSQL Serverに移行しようとしたとき、組合での選択はうまく動作します。私はT-SQLの制限を実装する方法を読んで、stackoverflowと別のページで私はどのようにしたらよいかを学んだが、私のクエリにそれを適用しようとすると実行されず、SQL Serverはエラーを返す。
SELECT
'false' AS historico,
'' AS tabla,
a.nombre,
a.apellido1,
a.apellido2
FROM
persons a
WHERE
a.eliminado = 'N'
AND (idconv = 30)
UNION ALL
SELECT
'true' AS historico,
b.tabla,
b.nombre,
b.apellido1,
b.apellido2
FROM
persons_hist b
WHERE
b.eliminado = 'N'
AND (tabla = '1955')
ORDER BY
apellido1 ASC
を私は0から始まる例については、「改ページ」を追加する10行をしようとすると、このクエリは私の18行から9行を返します。
制限なしのクエリは、次の(このクエリがうまく機能)であります最初のテーブルと2番目のテーブルから9行が、私は2テーブルの結合から、例えば10行をページ付けする必要があります。
;WITH Results_CTE AS
(
select
ROW_NUMBER() OVER (ORDER BY apellido1 asc) AS RowNum ,
'false' as historico,
'' as tabla,
a.nombre, a.apellido1, a.apellido2
from
persons a
where
a.eliminado = 'N' and (idconv = 30)
union all
select
ROW_NUMBER() OVER (ORDER BY apellido1 asc) AS RowNum ,
'true' as historico,
b.tabla, b.nombre, b.apellido1, b.apellido2
from
persons_hist b
where
b.eliminado = 'N' and (tabla = '1997')
)
SELECT *
FROM Results_CTE
WHERE RowNum >= 0
AND RowNum < 0 + 10
誰かが私を助けてくれますか?
ありがとう、しかし、別の質問、タブラの値は "A19B02"のような文字列にすることができます、SQL Serverは**私はこれを解決することができます** varはint型文字列に変換することはできません? – bcg
検索項目を引用符で囲む必要があります。たとえば、tabla = '1997'または文字列変数を使用します – Cato