[英]SQL query to separate a column into separate columns
我想在H和T的價格中有單獨的列,以“期間”作為通用指數。 關於我應該如何處理的任何建議?
這是我的SQL查詢目前產生的結果:
您可以使用GROUP BY
和條件GROUP BY
,如下所示:
SELECT
period
, SUM(CASE NAME WHEN 'H' THEN price ELSE 0 END) as HPrice
, SUM(CASE NAME WHEN 'T' THEN price ELSE 0 END) as TPrice
FROM MyTable
GROUP BY period
您可以執行以下操作:
SELECT period,
max(CASE WHEN name = 'H' THEN price END) as h_price,
max(CASE WHEN name = 'T' THEN price END) as t_price
FROM myTable
GROUP by period
如果要重新創建表?
1)創建一個新表,其列為:period,price_h和price_t。
2)將期間中的所有(不同)復制到新表的期間中。
3)將名稱= H的所有價格復制到新表的price_h中,並加入期間列
4)對price_t ...重復3。
祝好運!
在這方面游戲有點晚,但是您也可以調整數據。
讓我們創建一個樣本表。
CREATE TABLE myData(period int, price decimal(12,4), name varchar(10))
GO
-- Inserting Data into Table
INSERT INTO myData
(period, price, name)
VALUES
(1, 53.0450, 'H'),
(1, 55.7445, 'T'),
(2, 61.2827, 'H'),
(2, 66.0544, 'T'),
(3, 61.3405, 'H'),
(3, 66.0327, 'T');
現在執行帶有樞軸的選擇。
SELECT period, H, T
FROM (
SELECT period, price, name
FROM myData) d
PIVOT (SUM(price) FOR name IN (H, T)) AS pvt
ORDER BY period
當我需要構建一個動態sql腳本,該腳本采用將在表標題中顯示的列時,就使用了這種技術。 無需案例說明。
我不確定機殼和樞軸的性能。 也許有更多經驗的人可以添加一些評論,以獲得更好的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.