我想为H和T的价格设置单独的列,以'期间'作为共同指数。关于我应该怎么做的任何建议?
这是我的SQL查询目前产生的内容:
答案 0 :(得分:3)
您可以使用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
答案 1 :(得分:3)
您可以执行以下操作:
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
答案 2 :(得分:1)
如果您想重新创建表格?
1)创建一个包含列的新表:period,price_h& price_t。
2)将句点中的所有(不同)复制到新表的句号中。
3)将name = H的所有价格复制到新表格的price_h加入期间栏
4)对price_t ....重复3次。
祝你好运!答案 3 :(得分:1)
游戏稍迟一点,但你也可以转动数据。
让我们创建一个样本表。
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脚本时,我已经使用了这种技术,该脚本接收了将在表头上显示的列。不需要案例陈述。
我不确定案例和枢轴的表现。也许拥有更多经验的人可以添加一些评论,以提高性能。