2016-08-31 7 views
0

私はSQL Server 2014 Management Studioを使用しており、クエリウィンドウに書き込みます。SQL Server:フィールド値の最初のインスタンスのみを返します

SQLクエリを使用して返されるすべてのデータセットを取得できることはわかっていますが、それらは常に行全体として返されます。

フィールドの最初の値だけを、行の残りのフィールドと共に返すことはできますか?

ここで私は非常に単純なクエリで返されたものを返します。目的の出力はFireflyのWebページに出力されます。

enter image description here

ありがとうございます。

+2

プレゼンテーションレイヤーでは、クエリ結果を取得して処理するプレースメントレイヤーが本当にうまく処理されます。 SQLは、人間の目に見えるようなデータを作るのにはあまり適していません。 –

+1

いいえ、0値(実際には反対の値)が追加されるため、この値を必要としません。これは、アプリケーションがプレゼンテーションレイヤーで処理する必要があるものです。 – Igor

+0

ありがとうアレックス - 私は理解しています。それがSSRSなら、それはうまくいくだろう - しかし、FireflyアプリケーションはSQL出力をグリッド形式でしか提示できないので、その形式を欲しかったのだ。 – Jim

答えて

0

この

DECLARE @Tbl TABLE (ID INT, Name NVARCHAR(50)) 
INSERT INTO @Tbl   
VALUES 
(300, 'joe'), 
(300, 'Fred'), 
(300, 'Alan'), 
(301, 'Margaret'), 
(301, 'Bill'), 
(301, 'John') 

SELECT 
    IIF(ID = LAG(ID) OVER (ORDER BY ID), '', CAST(ID AS VARCHAR(50))) AS NID, 
    Name 
FROM 
    @Tbl 
ORDER BY ID 

の検索結果を試してみてください。

NID Name 
300 joe 
    Fred 
    Alan 
301 Margaret 
    Bill 
    John 
+1

ありがとう、NEER。出来た。ありがとう、A_Name_Does_Not_Matter。 – Jim

0

string.YouがLAG

select case when Id=lag(ID) over(order by ID) then '' else cast(Id as varchar(max)) end as ID,Name from Your_Table 
を使用して試すことができますよう、あなたが IDをキャストする必要があり、その後 IDを繰り返したため空白が必要な場合は

例:

create table #Tab1(Id int,Name nvarchar(max)) 

insert into #Tab1(Id,Name) Values 
(301,'A'), 
(301,'B'), 
(301,'C'), 
(302,'A'), 
(302,'B'), 
(303,'B'), 
(304,'B') 


select case when Id=lag(Id) over(order by id) then '' else cast(Id as varchar) end as ID,Name from #Tab1 
+0

今は動作しませんが、それは私がやったことが原因です。私は後でこれを更新します。 – Jim

+0

これは今、ありがとうございます。 – Jim

関連する問題