SQLServer2008について話しています。3nvarchar
列のテーブルがあります。N行目から1列目、M行目から2列目、K行目から3列目で、M、N、Kが等しくないものを選択したい。
そのようなクエリを書く方法は?また、ランダムな行を選択することは可能ですか?
SQLServer2008について話しています。3nvarchar
列のテーブルがあります。N行目から1列目、M行目から2列目、K行目から3列目で、M、N、Kが等しくないものを選択したい。
そのようなクエリを書く方法は?また、ランダムな行を選択することは可能ですか?
ROW_NUMBER()
これを実現する機能を備えたCTEを使用できます。
;WITH CTE AS
(
SELECT
Column1, Column2, Column3,
(your list of additional columns - if needed),
RN = ROW_NUMBER() OVER (ORDER BY InsertionDate)
)
SELECT
FirstValue = (SELECT Column1 FROM CTE WHERE RN = N),
SecondValue = (SELECT Column2 FROM CTE WHERE RN = M),
ThirdValue = (SELECT Column3 FROM CTE WHERE RN = K)
N, M, K
このクエリでは、を実際の整数値に置き換えるか、これら3つの値を保持するSQL変数を定義する必要があります。
declare @i1 int;
declare @i2 int;
declare @i3 int;
SET @i1=2;
SET @i2=4;
SET @i3=1;
;with t1 as
(
select *,row_number() over(order by (select 0)) as rn from t
)
select max(CASE rn WHEN @i1 then N1 else '' end),
max(CASE rn WHEN @i2 then N2 else '' end),
max(CASE rn WHEN @i3 then N3 else '' end)
from t1 where rn in (@i1,@i2,@i3);