zoukankan      html  css  js  c++  java
  • sql查询问题

    基础信息
    CREATE TABLE [dbo].[Test](
        [Year] [int] NULL,
        [Name] [nvarchar](50) NULL,
        [Value] [int] NULL,
        [ID] [int] NULL
    ) ON [PRIMARY]
    GO
    INSERT [dbo].[Test] ([Year], [Name], [Value], [ID]) VALUES (2001, N'柴油'101)
    INSERT [dbo].[Test] ([Year], [Name], [Value], [ID]) VALUES (2001, N'煤油'302)
    INSERT [dbo].[Test] ([Year], [Name], [Value], [ID]) VALUES (2002, N'汽油'503)
    INSERT [dbo].[Test] ([Year], [Name], [Value], [ID]) VALUES (2002, N'柴油'704)


    需要实现如下效果
    显示效果如下:
    Name     Year  Value
    柴油     2001    10
    煤油     2001    30
    汽油     2001    0
    柴油     2002    70
    煤油     2002    0
    汽油     2002    50
     

    我的sql语句如下,现需要效率更高的sql语句:

    SELECT year,name, sum(value) value FROM
    (
    SELECT year,t1.name, (CASE WHEN t1.Name=t2.Name THEN t2.value ELSE 0 END) value FROM
    (SELECT * FROM Test)t2
    CROSS JOIN
    (SELECT DISTINCT Name FROM Test)t1
    ) t3
    GROUP BY year,name
    ORDER BY year

     
  • 相关阅读:
    [HAOI2016]食物链
    [TJOI2011]序列
    P2548 [AHOI2004]智能探险车
    [JSOI2008]最大数
    模板之dinic
    Excim的NOIP2017游记
    数列排序
    Car的旅行路线
    [HAOI2006]均分数据
    [luogu2210] Haywire
  • 原文地址:https://www.cnblogs.com/puke/p/2599748.html
Copyright © 2011-2022 走看看