2016-03-22 4 views
1

私はデータセットを与えるSQLを書いています。レコードを結合して別の列に表示する

SELECT [Id] 
     --,s1.[CustomerId] 
     ,[Date] 
     ,dc.ColumnName 
     ,dc.ColumnId 
     ,[RuleId] 
    -- ,[RuleExceptionCount] 
     --,[TotalRowCount] 
     ,CAST((TotalRowCount - RuleExceptionCount)/CAST(TotalRowCount AS FLOAT) * 100 AS DECIMAL(6,2)) AS [FailurePercentage] 
    FROM [ASMPredictiveAnalytics].[dbo].[DQHistory] AS s1 
    JOIN dbo.DQColumns dc ON dc.ColumnId = s1.ColumnId 
    WHERE Date = (SELECT MAX(date) FROM 
    dbo.DQHistory) AND [email protected] 

結果は、この

Looks right now

のように見える私はこの

に見えるようになりたいと思った[Want to make it this way[2]

は、基本的には "概要" と「解像度のレコードを転置「メモ」を「品質」という名前の別の列を追加し、他の「列」 「名前」は、「品質」を「該当なし」として表示する必要があります。

+0

である場合には'N/A'とその値を置き換えるあなたが結果を貼り付けることができます画像とは対照的に、フォーマットされたテキストとして。人々があなたのデータをコピーして問題を再現し、回答を提案することを容易にします。データとそれに対するクエリを含む一時テーブルを持つ実行可能なスクリプトを作成する方が良い。 – Tanner

+0

'FailIdPercentage'にある値を' RuleId = 2'の 'Quantity'カラムに入れる必要がありますか? –

答えて

1

あなたは、以下のようなあなたのクエリを変更する必要があります

SELECT 
    MIN([Id]) as [Id], 
    [Date], 
    [ColumnName], 
    [ColumnId], 
    COALESCE(CAST(MIN(FailurePercentage) as varchar),'N/A') as FailurePercentage, 
    COALESCE(cast(MIN(Quality) as varchar),'N/A') as Quality 
FROM 
    (SELECT 
       [Id] 
       --,s1.[CustomerId] 
       ,[Date] 
       ,ColumnName 
       ,ColumnId 
       -- ,[RuleExceptionCount] 
       --,[TotalRowCount] 
       ,CASE WHEN [RuleId]=1 THEN CAST((TotalRowCount - RuleExceptionCount)/CAST(TotalRowCount AS FLOAT) * 100 AS DECIMAL(6,2)) ELSE NULL END as [FailurePercentage] 
       ,CASE WHEN [RuleId]=2 THEN CAST((TotalRowCount - RuleExceptionCount)/CAST(TotalRowCount AS FLOAT) * 100 AS DECIMAL(6,2)) ELSE NULL END as [Quality] 
     FROM [ASMPredictiveAnalytics].[dbo].[DQHistory] AS s1 
     JOIN dbo.DQColumns dc ON dc.ColumnId = s1.ColumnId 
     WHERE Date = (SELECT MAX(date) FROM 
     dbo.DQHistory) AND [email protected] 
    ) T 
    GROUP BY [Date],[ColumnName],[ColumnId] 

説明:

あなたは故障率と品質のために同じ計算をしていたので、私は内側のクエリ内で同じようにそれらを入れていますそのうちの1つはRuleId列の値に基づいてNULLです。私たちは、単にすべてをグループ化し、MINを計算しました外側のクエリで

NULLでない値を(あなたがここに集約関数を使用することができます)、そしてそれはまだNULL

関連する問題