摘要:项目中遇见统计每个课题组的”试剂“与”耗材“采购额与采购次数,当时查询统计“试剂”的采购额与采购次数,然后查询统计"耗材"的采购额与采购次数。这种方式效率很差,反反复复访问数据库很多次,如果oracle提供了行列装置函数就很好的解决此问题。oracle 11g提供PIOVToracle 10g提供的有decodedecode的逻辑如下:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )如果value等于if1,那么decode结果就是then1;如果value等于if2,那么结果就是then2;如果val
阅读全文
随笔分类 - 数据库
摘要:外键是双向的,即不仅是限制子表的值必须存在于父表中,而且还在每次对父表操作后检查子表,数据库默认行为子行存在时候限制对父行不被删除。某些时候,我们需要能够自动删除相关记录,而不是防止删除被引用的记录。举例如下:创建有关联关系的两个table 1 USE DataBaseBulkCopy 2 GO 3 CREATE TABLE Orders( 4 OrderID INT NOT NULL , 5 CustomerID CHAR(5) NULL, 6 OrderDate datetime default getdate(), 7 ShipName nvarchar(40) Null,...
阅读全文
摘要:在项目中遇见到查询参考此报价地区的地区信息,并且把此地区的信息与查询出来的参考报价地区信息组成一张临时表,这用到UNION 或则UNION all,SQL 代码如下:SQL 11 CREATE TYPE TY_AreaANDGoods AS TABLE(2 AreaID INT,3 TypeID INT4 )5 DECLARE @dt TY_AreaANDGoods;6 INSERT INTO @dt VALUES(1,1);7 SELECT aa.AreaId,aa.GoodsTypeId FROM MD_Area aa,@dt tt WHERE aa.QuotationType...
阅读全文
摘要:Exists在sql server 中是重要的关键字,可以使得一些查询的效率更高。在项目中遇见到查询有报价的地区信息和查询没有报价的地区信息,当时我用了INNER JOIN来实现,发现当数据量达到千万级后效率很差,后改为Exists关键字实现,效率提高不少。查询有报价的地区信息:sql_11 SELECT mm.ID, mm.CnName FROM MD_AreaInfo mm INNER JOIN MD_Prices pp ON mm.ID = pp.AreaID GROUP BY mm.ID, mm.CnName用exists关键字实现:SQL_21 SELECT mm.ID,...
阅读全文
摘要:这3个月一直在做公司的报价系统的新功能开发和一些性能改版,经常性的遇见查询某个地区某个交易品下的最近一天的价格。在这里面用到一个表MD_HistoryPrices是保存历史报价记录。第一种解决方式:用临时表:临时表1 WITH temp_2 AS(2 SELECT AreaID ,GoodsId,MIN(PriceDate) as PriceDate FROM MD_HistoryPrices GROUP BY AreaID,GoodsId3 )4 SELECT pp.* FROM MD_HistoryPrices pp , temp_2 tt WHERE pp.AreaID = tt.Are
阅读全文

浙公网安备 33010602011771号