SqlServer和Oracle中一些常用的sql语句3 行列转换
来源:互联网 发布:c windows system32 编辑:程序博客网 时间:2024/05/02 00:30
--217, SQL SERVERSELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009-08-01" , MAX(CASE WHEN Order_Date ='2009-08-02' THEN AR END) "2009-08-02" , MAX(CASE WHEN Order_Date ='2009-08-03' THEN AR END) "2009-08-03"FROM ( SELECT CONVERT(CHAR(10), Order_Date, 120) Order_Date , CUST_NAME , SUM(Qty * Price) AR FROM Orders WHERE Order_Date BETWEEN '2009-08-01' AND CAST('2009-08-03' AS datetime) +1 GROUP BY CONVERT(CHAR(10), Order_Date, 120) , CUST_NAME UNION ALL SELECT CONVERT(CHAR(10), Order_Date, 120) Order_Date ,NULL CUST_NAME , SUM(Qty * Price) AR FROM Orders WHERE Order_Date BETWEEN '2009-08-01' AND CAST('2009-08-03' AS datetime) +1 GROUP BY CONVERT(CHAR(10), Order_Date, 120) ) AGROUP BY Cust_Name--218, SQL SERVERSELECT Cust_Name, SUM( CASE WHEN CONVERT(CHAR(10),Order_Date, 120)='2009-08-01' THEN Qty* Price END ) "2009-08-01", SUM( CASE WHEN CONVERT(CHAR(10),Order_Date, 120) ='2009-08-02' THEN Qty* Price END ) "2009-08-02", SUM( CASE WHEN CONVERT(CHAR(10),Order_Date, 120) ='2009-08-03' THEN Qty* Price END ) "2009-08-03"FROM Orders WHERE 1=1 AND Order_Date BETWEEN '2009-08-01' AND CAST('2009-08-03' AS datetime) +1GROUP BY Cust_Name--218, ORACLESELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009-08-01" , MAX(CASE WHEN Order_Date ='2009-08-02' THEN AR END) "2009-08-02" , MAX(CASE WHEN Order_Date ='2009-08-03' THEN AR END) "2009-08-03"FROM ( SELECT TO_CHAR(Order_Date, 'YYYY-MM-DD')Order_Date , CUST_NAME , SUM(Qty * Price) AR FROM Orders WHERE Order_Date BETWEEN DATE'2009-08-01' AND DATE'2009-08-03' +1 GROUP BY TO_CHAR(Order_Date, 'YYYY-MM-DD') , CUST_NAME UNION ALL SELECT TO_CHAR(Order_Date, 'YYYY-MM-DD') Order_Date ,NULL CUST_NAME , SUM(Qty * Price) AR FROM Orders WHERE Order_Date BETWEEN DATE'2009-08-01' AND TO_DATE('2009-08-03', 'YYYY-MM-DD') +1 GROUP BY Order_Date ) AGROUP BY Cust_Name --220, SQL SERVERSELECT Cust_Name , "2009-08-01" , "2009-08-02" , "2009-08-03"FROM ( SELECT CONVERT(CHAR(10),Order_Date, 120) Order_Date , Cust_Name , Qty * Price AR FROM Orders WHERE 1=1 AND Order_Date BETWEEN '2009-08-01' AND '2009-08-04' )AS DPIVOT ( SUM(AR) FOR Order_Date IN ([2009-08-01], [2009-08-02], "2009-08-03") ) AS P--220, SQL SERVERSELECT Order_Date ,[李先生] , [张先生] , [曹先生] , [陈先生]FROM ( SELECT CONVERT(CHAR(10),Order_Date, 120) Order_Date , Cust_Name , Qty , Price , Qty*Price AS AR FROM Orders WHERE 1=1 AND Order_Date BETWEEN '2009-08-01' AND '2009-08-04' )AS DPIVOT ( SUM(AR) FOR Cust_Name IN ([李先生], [张先生], [曹先生], [陈先生]) ) AS P --222, ORACLESELECT Cust_Name , "2009-08-01" , "2009-08-02" , "2009-08-03"FROM ( SELECT TO_CHAR(Order_Date, 'YYYY-MM-DD') Order_Date , Cust_Name --, Qty --, Price , Qty * Price AR FROM ORDERS WHERE 1=1 AND Order_Date BETWEEN date'2009-08-01' AND date'2009-08-04') DPIVOT ( SUM(AR) FOR Order_Date IN ('2009-08-01' AS "2009-08-01", '200908-02' "2009-08-02", '2009-08-03' "2009-08-03") ) P--223, ORACLESELECT *FROM ( SELECT TO_CHAR(Order_Date, 'YYYY-MM-DD') OrderDate , Cust_Name , Qty , Price FROM Orders WHERE 1=1 AND Order_Date BETWEEN date'2009-08-01' AND date'2009-08-04' ) PIVOT ( SUM(Qty * Price) AS "AR" , COUNT(*) AS "Qty" FOR OrderDate IN ('2009-08-01' AS "08-01", '2009-08-02' "08-02", '2009-08-03' "08-03") ) P
--226, SQL SERVERDROP TABLE Orders_PivotG0SELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009-08-01" , MAX(CASE WHEN Order_Date ='2009-08-02' THEN AR END) "2009-08-02" , MAX(CASE WHEN Order_Date ='2009-08-03' THEN AR END) "2009-08-03" INTO Orders_PivotFROM ( SELECT CONVERT(CHAR(10), Order_Date, 120) Order_Date , CUST_NAME , SUM(Qty * Price) AR FROM Orders WHERE 1=1 AND Order_Date BETWEEN '2009-08-01' AND CAST('2009-08-03' AS datetime) +1 GROUP BY CONVERT(CHAR(10), Order_Date, 120) , CUST_NAME ) AGROUP BY Cust_Name--226, ORACLEDROP TABLE Orders_Pivot;CREATE TABLE Orders_PivotASSELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009-08-01" , MAX(CASE WHEN Order_Date ='2009-08-02' THEN AR END) "2009-08-02" , MAX(CASE WHEN Order_Date ='2009-08-03' THEN AR END) "2009-08-03"FROM ( SELECT TO_CHAR(Order_Date, 'YYYY-MM-DD')Order_Date , CUST_NAME , SUM(Qty * Price) AR FROM Orders WHERE Order_Date BETWEEN DATE'2009-08-01' AND DATE'2009-08-03' +1 GROUP BY TO_CHAR(Order_Date, 'YYYY-MM-DD') , CUST_NAME ) AGROUP BY Cust_Name --227, SQL SERVERSELECT Order_Date, Cust_Name, ARFROM ( SELECT CAST('2009-08-01' AS datetime) Order_Date -- SQL SERVER --DATE'2009-08-01' -- ORACLE , Cust_Name , "2009-08-01" AR FROM Orders_Pivot UNION ALL SELECT CAST('2009-08-02' AS datetime) Order_Date , Cust_Name , "2009-08-02" AR FROM Orders_Pivot UNION ALL SELECT CAST('2009-08-03' AS datetime) Order_Date , Cust_Name , "2009-08-03" AR FROM Orders_Pivot ) AWHERE AR IS NOT NULL--227, ORACLESELECT Order_Date, Cust_Name, ARFROM ( SELECT DATE'2009-08-01' Order_Date , Cust_Name , "2009-08-01" AR FROM Orders_Pivot UNION ALL SELECT DATE'2009-08-02' Order_Date , Cust_Name , "2009-08-02" AR FROM Orders_Pivot UNION ALL SELECT DATE'2009-08-03' Order_Date , Cust_Name , "2009-08-03" AR FROM Orders_Pivot ) AWHERE AR IS NOT NULL --228, SQL SERVERSELECT Order_Date , Cust_Name , AR , SUBSTRING(Order_Date, 6,5) "Date"FROM ( SELECT Cust_Name, "2009-08-01" , "2009-08-02", "2009-08-03" FROM Orders_Pivot ) DUNPIVOT ( AR FOR Order_Date IN ([2009-08-01], [2009-08-02], "2009-08-03") ) P--228, ORACLESELECT Order_Date , Cust_Name , AR , SUBSTR(Order_Date, 6,5) "Date"FROM ( SELECT Cust_Name, "2009-08-01" , "2009-08-02", "2009-08-03" FROM Orders_Pivot ) DUNPIVOT ( AR FOR Order_Date IN ("2009-08-01", "2009-08-02", "2009-08-03") ) P --230, ORALCE / SQL SERVER SELECT P.Cust_Name , P."2009-08-01" , P."2009-08-02" , P."2009-08-03" , I.NFROM Orders_Pivot P, Tally IWHERE 1=1 AND N<=3ORDER BY 1, 4 --231, ORALCE / SQL SERVERSELECT Order_Date , Cust_Name , ARFROM ( SELECT CASE N WHEN 1 THEN '2009-08-01' WHEN 2 THEN '2009-08-02' WHEN 3 THEN '2009-08-03' END Order_Date , Cust_Name , CASE N WHEN 1 THEN "2009-08-01" WHEN 2 THEN "2009-08-02" WHEN 3 THEN "2009-08-03" END AR FROM Orders_Pivot P, Tally I WHERE 1=1 AND N<=3 ) AWHERE AR IS NOT NULL
--234, ORACLE/SQL SERVER SELECT EmpName , Major , ROW_NUMBER() OVER (PARTITION BY EmpName ORDER BY Major) FldIdxFROM Specialty--236, ORACLE / SQL SERVERSELECT EmpName , MAX(CASE WHEN FldIdx=1 THEN Major END) Fld1 , MAX(CASE WHEN FldIdx=2 THEN Major END) Fld2 , MAX(CASE WHEN FldIdx=3 THEN Major END) Fld3 , COUNT(*) FldCountFROM ( SELECT EmpName , Major , ROW_NUMBER() OVER (PARTITION BY EmpName ORDER BY Major) FldIdx FROM Specialty ) AGROUP BY EmpNameORDER BY COUNT(*)DESC
- SqlServer和Oracle中一些常用的sql语句3 行列转换
- SqlServer和Oracle中一些常用的sql语句1
- SqlServer和Oracle中一些常用的sql语句2
- SqlServer和Oracle中一些常用的sql语句5 流程控制语句
- SqlServer和Oracle中一些常用的sql语句9 SQL优化
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
- SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
- SqlServer和Oracle中一些常用的sql语句6 存储过程
- SqlServer和Oracle中一些常用的sql语句7 游标
- SqlServer和Oracle中一些常用的sql语句10 特殊应用
- SQLServer中常用的一些操作表,字段和索引的SQL语句
- SQLServer中常用的一些操作表,字段和索引的SQL语句
- 关于sql语句的一些操作 行列转换(转)
- 一些sql 语句(行列转换等)
- 一些sql 语句(行列转换等)
- 面试中遇到的sql语句行列转换问题
- sqlserver面试中常用的sql语句
- oracle中SQL语句的一些有效常用用法
- Eclipse ADT配置CVS
- 升级 Windiows 2012 引起 MDT 的两个路径错误
- 爱立信2013暑期实习项目 历程
- GCM的Push功能调查汇总
- 设计模式六大原则(4):接口隔离原则
- SqlServer和Oracle中一些常用的sql语句3 行列转换
- DHL解决起来很容易,联系起来很难
- 计算机科学中最重要的32个算法
- 使用hadoop进行大规模数据的全局排序
- sort使用tab键作为分隔符,出现“sort: multi-character tab”错误
- 10 Tips to make Your C Program Effective
- poj 1042 gone fishing
- (一)一个工作任务引起的乱战——c#中结构体与byte[]间相互转换
- Eclipse下使用Subversion(SVN工具)