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

     
  • 相关阅读:
    nginx面试题
    解决zabbix图形显示“方块”问题
    echo命令详解
    Ubantu1804更换阿里源
    arp命令
    /boot、/和/swap分区扩容
    windows server 2016 安装 .Net Framework失败解决方案
    报错kernel:NMI watchdog: BUG: soft lockup
    jenkins 常用插件源URL
    jenkins rpm包方式安装
  • 原文地址:https://www.cnblogs.com/puke/p/2599748.html
Copyright © 2011-2022 走看看