1

SQLServer2008について話しています。3nvarchar列のテーブルがあります。N行目から1列目、M行目から2列目、K行目から3列目で、M、N、Kが等しくないものを選択したい。

そのようなクエリを書く方法は?また、ランダムな行を選択することは可能ですか?

4

2 に答える 2

3

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変数を定義する必要があります。

于 2012-08-24T10:49:20.290 に答える
0
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);
于 2012-08-24T10:57:07.127 に答える