iT邦幫忙

0

如何使用查詢出來的欄位值做為變數

各位網大好

小弟在SQL中寫了一個查詢,但是想利用查詢出來結果的某些欄位做為變數,在利用If Else進行判斷後做加、減成為一個新的欄位,但不知道怎麼做。

例如,Query出來的欄位有:ItemCode、Price、OrderQty、ShippedQty、InvQty等欄位,小弟想要將『OrderQty、ShippedQty、InvQty』設為變數,判斷那個大,然後用來與『Price』相乘,但在設定變數時因為數量欄位回傳值不只一個而失敗,不知道有沒有什麼方式可以做到?請知道做法的網大協助解惑,感恩!!

Albert iT邦高手 1 級 ‧ 2018-04-03 13:38:28 檢舉
你沒寫好重複時只抓第一筆

才會有""數量欄位回傳值不只一個""
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
暐翰
iT邦大師 1 級 ‧ 2018-04-03 14:46:07
最佳解答

結果圖:

Script:

--【以下建立測試資料數據】
create table #Tem_Table ([ItemCode] nvarchar(10),[Price] int,[OrderQty] int,[ShippedQty] int
                        ,[InvQty] int);
insert into #Tem_Table ([ItemCode],[Price] ,[OrderQty],[ShippedQty],[InvQty]) values 
	(N'Nike球鞋',2200,52,64,73)
    ,(N'Adidas球鞋',3300,15,66,27)   
    ,(N'XXX球鞋',4560,25,62,57)   
;

--【組合結果】
with GetTheMaxQty as(
    select 
        ( 
           SELECT MAX(tem_value)
           FROM   ( VALUES ( [OrderQty]), ( [ShippedQty]) , ( [InvQty])) 
               AS lstValues (tem_value)
        ) AS maxQty
        ,*
    from #Tem_Table
)   
select *,maxQty * Price as "maxQty * Price"
from GetTheMaxQty;

用case when組合也可以
可以參考:[SQL]取得Table中不同欄位的最大值

我要發表回答

立即登入回答