本文介紹了SQL Server 2016:如何獲取單行視圖的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我一直試圖正確地表達這一點,但以下是我的dbfiddle
表:
Customerkey int NOT NULL PRIMARY KEY,
processdate date NULL,
CCcount int NULL,
CHKcount int NULL,
SACount int NULL
);
INSERT INTO products
(Customerkey, processdate, CCcount, CHKCount, SACount)
VALUES
(101,'20210501', 12,3,5),
(102,'20210203', 1,3,1),
(103,'20190412', 4,0,2)
SELECT CustomerKey, processdate,
ProductMix=STUFF
(
(
SELECT distinct ',' + str(CCcount) + ',' + str(CHKCount) + ',' + str(SACount)
FROM products t2
WHERE t2.CustomerKey = t1.CustomerKey
and t2.processdate = t1.processdate
),1,1,''
)
FROM products t1
GROUP BY CustomerKey, processdate
SELECT CustomerKey, processdate,
concat(
Case when CCcount >' ' then 'CCcount'
when CHKCount > '' then 'CHKCount'
when SACount > '' then 'SACount'
end, '') as Product_Mix_Expanded
from products
預期輸出:
CustomerKey | 處理日期 | Product_Mix | Product_Mix_Expanded |
---|---|---|---|
101 | 2021-05-01 | 12,3,5 | CCcount、CHKCount、SACount |
102 | 2021-02-03 | 1,3,1 | CCcount、CHKCount、SACount |
103 | 2019-04-12 | 4,0,2 | 計數、存儲計數 |
如您所見,我使用了一些東西,但不確定這是否是正確的方法。我需要的產品組合顯示的計數和產品組合在文字格式擴展。
如果您需要更多的信息,請隨時提問。提前謝謝您。
推薦答案
根據您的樣本數據和預期結果,您是否可以執行以下操作?
select CustomerKey, ProcessDate, Concat(CCcount,',',CHKcount,',',SACount) Product_Mix,
Concat(case when CCcount>0 then 'CCcount' else '' end,', ',
case when CHKcount>0 then 'CHKcount' else '' end, ', ',
case when SACount>0 then 'SACount' else '' end) Product_Mix_Expanded
from products
這篇關于SQL Server 2016:如何獲取單行視圖的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,