0

サンプルデータ

SELECT TOP 20
        TMPPO.PurchaseOrder ,
        TMPPO.LineItem ,
        ASLD.SignatureDate ,
        ASLD.SignatureTime ,
        ASLD.Operator ,
        ASLD.Variable ,
        ASLD.VariableDesc ,
        ASLD.VarNumericValue
FROM    #POAMENDMENTS TMPPO
        LEFT OUTER JOIN [SysproCompanyR].[dbo].[AdmSignatureLogDet] ASLD ON TMPPO.TransactionId = ASLD.TransactionId
                                                              AND TMPPO.SignatureDate = ASLD.SignatureDate
                                                              AND TMPPO.SignatureTime = ASLD.SignatureTime
WHERE   YEAR(TMPPO.SignatureDate) = 2013
        AND MONTH(TMPPO.SignatureDate) = 08
        AND VariableDesc IN ( 'Previous foreign price', 'Previous price',
                              'Foreign price', 'Price' )
ORDER BY PurchaseOrder ,
        LineItem 

次のテーブルがありますが、以下のようにレコードを返したくありません。列見出し Variable Desc の下に、Foreign Price、Previous Foreign pirce、以前の価格、および価格があり、Variable、Variable Desc、および VarNumberic を置き換える見出しとしてこれらを作成したいと考えています。
たとえば、最初の行は次のようになります

Purchase Order LineItem SignatureDate SignatureTime Operator PrevFPrice FPrice PrevPrice Price
002074         0001     2013-02-23     9523598       UPOFA0  19.68      21.51   19.68    21.51
004931         0001     2013-08-09     7485253       PVWYK0  980.00     840.00  980.00   840.00  

申し訳ありませんが、ここにサンプル データを配置するのは難しいため、方法がわかりません...

これは可能ですか?

@Bummiそれは私にこのようなデータを提供します。本質的に元のサンプルデータによれば、日付と時刻に応じて2回しか変更されないのに、発注書005331が何度も複製されるのはなぜですか ここに画像の説明を入力

4

2 に答える 2

1

私が理解していることから、最初のクエリに対する結合を探しています

;With CTE as
(
SELECT TOP 20 TMPPO.PurchaseOrder, TMPPO.LineItem, ASLD.SignatureDate,ASLD.SignatureTime,ASLD.Operator, ASLD.Variable, ASLD.VariableDesc, ASLD.VarNumericValue  FROM #POAMENDMENTS TMPPO
LEFT OUTER JOIN [SysproCompanyR].[dbo].[AdmSignatureLogDet] ASLD ON TMPPO.TransactionId = ASLD.TransactionId and TMPPO.SignatureDate = ASLD.SignatureDate and TMPPO.SignatureTime = ASLD.SignatureTime   
WHERE YEAR(TMPPO.SignatureDate) = 2013
and MONTH(TMPPO.SignatureDate) = 08 
and VariableDesc IN ('Previous foreign price','Previous price','Foreign price','Price')
ORDER BY PurchaseOrder, LineItem  
)
Select c1.PurchaseOrder,c1.LineItem,c1.SignatureDate,c1.SignatureTime,c1.Operator
,c1.VarNumericValue as [Previous foreign price]
,c2.VarNumericValue as [Previous price]
,c3.VarNumericValue as [Foreign price]
,c4.VarNumericValue as [Price]

FROM CTE c1
JOIN CTE c2 on c2.PurchaseOrder=c1.PurchaseOrder and c2.VariableDesc='Previous price'    
               and c2.LineItem=c1.LineItem and c2.SignatureDate=c1.SignatureDate and c2.SignatureTime=c1.SignatureTime
JOIN CTE c3 on c3.PurchaseOrder=c1.PurchaseOrder and c3.VariableDesc='Foreign price'    
               and c3.LineItem=c1.LineItem and c3.SignatureDate=c1.SignatureDate and c3.SignatureTime=c1.SignatureTime
JOIN CTE c4 on c4.PurchaseOrder=c1.PurchaseOrder and c4.VariableDesc='Price'    
               and c4.LineItem=c1.LineItem and c4.SignatureDate=c1.SignatureDate and c4.SignatureTime=c1.SignatureTime
Where c1.VariableDesc='Previous foreign price'
于 2013-08-29T12:31:01.360 に答える
0

「AS」を使用して列の名前を変更できます

何かを他のものとして選択する

于 2013-08-29T12:27:08.407 に答える