說明:
給你個提示
請用善用Union方式~
union +1
<pre class="c" name="code">
SELECT [商品型號],[商品名稱],'1' AS [尺寸],[尺寸1] AS [庫存] FROM [Table_1]
UNION
SELECT [商品型號],[商品名稱],'2' AS [尺寸],[尺寸2] AS [庫存] FROM [Table_1]
UNION
SELECT [商品型號],[商品名稱],'3' AS [尺寸],[尺寸3] AS [庫存] FROM [Table_1]
UNION
SELECT [商品型號],[商品名稱],'4' AS [尺寸],[尺寸4] AS [庫存] FROM [Table_1]
UNION
SELECT [商品型號],[商品名稱],'5' AS [尺寸],[尺寸5] AS [庫存] FROM [Table_1]
UNION
SELECT [商品型號],[商品名稱],'6' AS [尺寸],[尺寸6] AS [庫存] FROM [Table_1]
要避開null或者庫存為0,每個select子句加上where條件就好了
已測試 唯若尺寸若遠大於6 可能非常麻煩
如果u_source的資料有到尺寸100的話,把@最大尺寸設定為100,這個script就可以直接執行,不用再改其它地方。
<pre class="c" name="code">declare @sql nvarchar(max)
declare @目前尺寸 int
declare @最大尺寸 int
set @sql=''
set @目前尺寸=1
set @最大尺寸=6
while @目前尺寸<=@最大尺寸
begin
set @sql='insert into u_target (商品型號,商品名稱,尺寸,數量) '
set @sql=@sql+'select 商品型號,商品名稱,'''+CONVERT(varchar(2),@目前尺寸)+''',尺寸'+CONVERT(varchar(2),@目前尺寸)+' from u_source where 尺寸'+CONVERT(varchar(2),@目前尺寸)+'>0'
EXECUTE sp_executesql @sql
set @目前尺寸=@目前尺寸+1
end
這問題看起來應該是一個要求用pivot的(作業?)
ander6879提到:
品庫存名細中再
看不太懂你的加重,若你還想加入其它table 建議以allenlwh 產生了新的table 在去join 你的size table 應該就可以了
pivot 感謝又學到新東西 目前到是沒想到如何運用在此例子上
說實在的.....題目歸題目的設計...
實際上沒有人會將資料這麼紀錄...完全沒邏輯的存資料...
謝謝各位:最終是要面對一個最難的題型了。
==>如圖中的上方資料表欄位,需拆成下方資料明細。該如何下語法。
先前忘了有上傳圖檔這個功能,導至問題混淆。故貼圖上傳