-----查询条件
declare @startDate varchar(20)--开始时间
declare @endDate varchar(20)--结束时间
declare @brandId varchar(10) --项目ID
declare @ProductLevel varchar(5)--产品级数
declare @TopicLevel varchar(5)--话题级数
set @startDate='2012-7-18'
set @endDate='2012-7-20'
set @brandId='20003'
set @ProductLevel=1
set @TopicLevel=12
-----内部临时变量
declare @firstProducts varchar(max)
declare @secondProducts varchar(max)
declare @firstTopics varchar(max)
declare @secondTopics varchar(max)
declare @sqlPageTable varchar(max)
declare @sqlFirstProductTable varchar(max)
declare @sqlSecondProductTable varchar(max)
declare @sqlFirstTopicTable varchar(max)
declare @sqlSecondTopicTable varchar(max)
declare @TableCondition varchar(100)
declare @RelevanceCondition varchar(max)
declare @WhereCondition varchar(500)
declare @SQL varchar(max)
-----获得某品牌下的所有产品
select @firstProducts=ISNULL(@firstProducts+',','')+'['+ProductName+']' FROM [IWT_BrandProduct] where [ParentProductID]=0 and BrandID=@BrandID
select @secondProducts=ISNULL(@secondProducts+',','')+'['+ProductName+']' FROM [IWT_BrandProduct] where [ParentProductID]<>0 and BrandID=@BrandID
-----获得某品牌下的所有话题
select @firstTopics=ISNULL(@firstTopics+',','')+'['+TagSearchName+']' FROM (select distinct TagSearchName from [IWT_BrandTag] where ParentTagID=0 and BrandID=@BrandID) as A
select @secondTopics=ISNULL(@secondTopics+',','')+'['+TagSearchName+']' FROM (select distinct TagSearchName from [IWT_BrandTag] where ParentTagID<>0 and BrandID=@BrandID) as A
-----获得出现的关联表
set @TableCondition= case @ProductLevel when 1 then ' ,FirstProductTable.* ' when 2 then ' ,SecondProductTable.* ' when 12 then ',FirstProductTable.* ,SecondProductTable.* ' end
set @TableCondition= case @TopicLevel when 1 then @TableCondition+' ,FirstTopicTable.* ' when 2 then @TableCondition+' ,SecondTopicTable.* ' when 12 then @TableCondition+' ,FirstTopicTable.* ,SecondTopicTable.* ' end
---------------------------------------------------------------------------page的基本信息
set @sqlPageTable=
'SELECT [TempPageViewTest].Page_ID
,Page_Title as 标题
,Page_URL as 网址
,case ISNULL(Page_ProState,-1) when -1 then ''未处理'' when 0 then ''未处理'' when 1 then ''已处理'' when 2 then ''已关注'' when 3 then ''需建议'' end AS 处理状态
,case ISNULL(Page_AuditState,-1) when -1 then ''未审核'' when 0 then ''未审核'' when 1 then ''已审核'' end as 审核状态
,Isnull(Page_CustomerState,0) as 是否建议
,Isnull(Page_Storey,0) as 楼层数
,Isnull(Page_Extend,0) as 是否正面
,case Page_IsArtificial when 0 then ''系统抓取'' when 1 then ''人工录入'' end as 分拣类型
,convert(varchar(8),Page_LastReplyTime,112) 最后回复日期
,convert(varchar(8),Page_UDate,112) 修改日期
,convert(varchar(8),Page_CDate,112) 分拣日期
,convert(varchar(8),Page_PostTime,112) 发布日期
,Page_ReplyCount as 回复数
,Page_VisitCount as 访问数
,PageDomain_NetName as 媒体
,siteTypeNew_title as 媒体类别
,case Page_Attitude when 1 then ''攻击'' when 2 then ''负面'' when 3 then ''中立'' when 4 then ''正面'' when 5 then ''赞扬'' end as 健康度
,Page_Return
,Admin_RealName as 分拣员
,case ISNULL(Treadate,1) when 1 then '''' end as 处理时间
,case Page_FromWeb when '''' then 0 else 1 end 是否转载
,Page_area as 地区
'+@TableCondition+'
FROM [dbo].[TempPageViewTest]'
---------------------------------------------------------------------------一级产品部分
set @sqlFirstProductTable=
'SELECT * FROM
(SELECT DISTINCT
dbo.IWT_Page.Page_ID
,IWT_BrandProduct_1.ProductName
,1 AS TempC
FROM dbo.IWT_BrandTag INNER JOIN
dbo.IWT_PageTag ON dbo.IWT_BrandTag.TagID = dbo.IWT_PageTag.TagID INNER JOIN
dbo.IWT_Page ON dbo.IWT_PageTag.PageID = dbo.IWT_Page.Page_ID INNER JOIN
dbo.IWT_BrandProduct ON dbo.IWT_BrandTag.ProductID = dbo.IWT_BrandProduct.ProductID INNER JOIN
dbo.IWT_BrandProduct AS IWT_BrandProduct_1 ON dbo.IWT_BrandProduct.ParentProductID=IWT_BrandProduct_1.ProductID
WHERE dbo.IWT_Page.Brand_ID='+@brandId+') as A
pivot
(
COUNT(A.Tempc) FOR A.ProductName IN('+@firstProducts+')
)as P'
set @sqlFirstProductTable=' LEFT JOIN ('+@sqlFirstProductTable+') as FirstProductTable ON [TempPageViewTest].Page_ID=FirstProductTable.Page_ID '
---------------------------------------------------------------------------二级产品部分
set @sqlSecondProductTable=
'SELECT * FROM
(SELECT DISTINCT
dbo.IWT_Page.Page_ID
,dbo.IWT_BrandProduct.ProductName
,1 AS TempC
FROM dbo.IWT_BrandTag INNER JOIN
dbo.IWT_PageTag ON dbo.IWT_BrandTag.TagID = dbo.IWT_PageTag.TagID INNER JOIN
dbo.IWT_Page ON dbo.IWT_PageTag.PageID = dbo.IWT_Page.Page_ID INNER JOIN
dbo.IWT_BrandProduct ON dbo.IWT_BrandTag.ProductID = dbo.IWT_BrandProduct.ProductID INNER JOIN
dbo.IWT_BrandTag AS IWT_BrandTag_1 ON dbo.IWT_BrandTag.ParentTagID = IWT_BrandTag_1.TagID
WHERE dbo.IWT_Page.Brand_ID='+@brandId+') as A
pivot
(
COUNT(A.Tempc) FOR A.ProductName IN('+@secondProducts+')
)as P'
set @sqlSecondProductTable= ' LEFT JOIN ('+@sqlSecondProductTable+') as SecondProductTable ON [TempPageViewTest].Page_ID=SecondProductTable.Page_ID '
---------------------------------------------------------------------------一级话题部分
set @sqlFirstTopicTable=
'SELECT * FROM
(SELECT DISTINCT
dbo.IWT_Page.Page_ID
,IWT_BrandTag_1.TagName AS fristTag
,1 AS TempC
FROM dbo.IWT_BrandTag
INNER JOIN dbo.IWT_PageTag ON dbo.IWT_BrandTag.TagID = dbo.IWT_PageTag.TagID
INNER JOIN dbo.IWT_Page ON dbo.IWT_PageTag.PageID = dbo.IWT_Page.Page_ID
INNER JOIN dbo.IWT_BrandTag AS IWT_BrandTag_1 ON dbo.IWT_BrandTag.ParentTagID = IWT_BrandTag_1.TagID
WHERE dbo.IWT_Page.Brand_ID='+@brandId+') as A
pivot
(
COUNT(A.Tempc) FOR A.fristTag IN('+@firstTopics+')
)as T '
set @sqlFirstTopicTable=' LEFT JOIN ('+@sqlFirstTopicTable+') as FirstTopicTable ON [TempPageViewTest].Page_ID=FirstTopicTable.Page_ID '
---------------------------------------------------------------------------二级话题部分
set @sqlSecondTopicTable=
'SELECT * FROM
(SELECT DISTINCT
dbo.IWT_Page.Page_ID
,dbo.IWT_BrandTag.TagName AS secondTag
,1 AS TempC
FROM dbo.IWT_BrandTag
INNER JOIN dbo.IWT_PageTag ON dbo.IWT_BrandTag.TagID = dbo.IWT_PageTag.TagID
INNER JOIN dbo.IWT_Page ON dbo.IWT_PageTag.PageID = dbo.IWT_Page.Page_ID
INNER JOIN dbo.IWT_BrandTag AS IWT_BrandTag_1 ON dbo.IWT_BrandTag.ParentTagID = IWT_BrandTag_1.TagID
WHERE dbo.IWT_Page.Brand_ID='+@brandId+') as A
pivot
(
COUNT(A.Tempc) FOR A.secondTag IN('+@secondTopics+')
)as T '
set @sqlSecondTopicTable= ' LEFT JOIN ('+@sqlSecondTopicTable+') as SecondTopicTable ON [TempPageViewTest].Page_ID=SecondTopicTable.Page_ID '
---------------------------------------------------------------------------获得关联条件
set @RelevanceCondition=case @ProductLevel when 1 then @sqlFirstProductTable
when 2 then @sqlSecondProductTable
when 12 then @sqlFirstProductTable+@sqlSecondProductTable
end
set @RelevanceCondition=case @TopicLevel when 1 then @RelevanceCondition + @sqlFirstTopicTable
when 2 then @RelevanceCondition + @sqlSecondTopicTable
when 12 then @RelevanceCondition + @sqlFirstTopicTable + @sqlSecondTopicTable
end
set @WhereCondition=' WHERE Brand_ID='+@brandId+' and Page_PostTime >='''+@startDate+''' and Page_PostTime<'''+@endDate+''''
---------------------------------------------------------------------------拼接查询的SQL语句
set @SQL=@sqlPageTable+@RelevanceCondition+@WhereCondition
--print @SQL
exec(@SQL)
相关推荐
SQL之pivot语句与unpivot语句
文章目录pivot行转列例子1例子2例子3unpivot列转行 pivot行转列 pivot 用于将列值旋转为列名(即行转列),在SQLServer 2000可以用聚合函数配合CASE语句实现 即SQL语句行列转换的两种方法 case…when与pivot函数的应用 但pivot运算符能够实现CASE语句相同的功能,并且可以用更少的代码 语法 引用自:https://blog.csdn.net/yx183/article/details/82423420 SELECT <非透视的列>,
SqlServer数据库之PIOVT运算符
PIOVT标准格式: SELECT ... FROM <source_table_or_table_expression> PIVOT(<agg_func>(<aggregation_element>) FOR <spreading_element> IN (<list_of_targe...
ESP32设备驱动-VCNL4040趋近传感器
VCNL4040 将趋近传感器 (PS)、环境光传感器 (ALS) 和高功率 IRED 集成到一个小型封装中。它通过CMOS工艺将光电二极管、放大器和模数转换电路集成到一个芯片中。
行转列pivot -- 简单的实例 to 动态拼接行转列
一、orcale简单行转列 with temp as ( select distinct r.id rid, r.level_no levelno, r.type_name rname, c.id cid, ...
oracle 使用pivot 函数进行批量数据的动态行转列
公司业务要求,需要对一批数据大批量地进行动态行转列之后进行分析,而pivot 函数in中不能使用子查询,有个方法是说可以通过动态sql拼接的方法实现,在网上找了很久之后没找到具体的方法,就自己去摸索实现了。具体方法如下。 因为需要实现的是动态行转列,所以需要先用wm_concat(distinct())函数单独查出列名,再用dbms_lob.substr()将clob字段转成字符串。...
关于SQL中PIVOT函数的使用方法
这篇文章给大家分享的是“pivot函数是什么,具体用法是怎样的”,希望这篇文章对你一定的参考价值
C/C++文件指针的区别:读取同一个文件结果诡异
对于C/C++的文件操作,就是对指向FILE的指针©或者对fstream对象进行操作,此时有一个”文件位置指针“至关重要,这个是指示下一次读写操作所在字节的整数值。每次读写一个(或者1组)数据后,系统自动将文件位置指针移动到下一个读写位置上。 其实我是在用C++写一个简单的词法分析程序时候遇到的问题,废话少说,我们直接进入正题~~(也就是我遇到的问题【捂脸】) 在C++中对一个文本完全读写,分别打...
Oracle、MySQL实现行列互转
Oracle、MySQL实现行转列,unpiovt、pivot函数的使用。
SQL中PIVOT函数的用法
PIVOT 是 SQL Server 中的一个功能,用于将行转换为列。然而,MySQL 和 Oracle 不直接支持 PIVOT 语法。但是,你可以使用条件聚合或其他技术来模拟 PIVOT 的行为。-- 从子查询中选择数据,子查询从源表中选择需要的数据SELECT ...FROM-- 源查询,从源表中选取你希望进行PIVOT操作的列SELECT ...-- 可以包含WHERE子句、GROUP BY子句等以筛选或组织数据-- PIVOT操作,将行数据转换为列数据PIVOT。
SQL中PIVOT的用法
PIVOT 提供的语法比一系列复杂的 SELECT…CASE 语句中所指定的语法更简单和更具可读性。 以下是带批注的 PIVOT 语法: SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列名称>, FROM (...
SQL常用语句总结
总结常用SQL语法
行列转换利器:Oracle pivot函数全面解析
2、现在我要把SEX当成列,将AGE值放入该列的结果,使用pivot语句。3、使用decode函数的方法。4、使用case when函数。1、准备一张现成的表。
行列转换 pivot
行列转化语法: select * from ( //子查询 select 别名.你需要展示的数据 from 表名 别名 ) pivot ( 函数 max/sum/...(你要转化成的列的数据,如三家分店 分别每天的交易额) for 你想作为表头的字段(比如日期 ) in () ) 案例: select * from ( se
SQL Povit函数使用及实例
PIVOT函数用法与实例
pivot的用法
在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据: INSERT INTO WEEK_INCOME SELECT '星期一',1000 UNION ALL SELECT '星期二',2000 UNION ALL SELECT ...
SQL UNPIVOT详解
一、UNPIVOT: UNPIVOT与PIVOT正好相反,它把数据从列旋转到行 例: 首先将源数据显示出来,看一下: 我们先把empid为1和2的2006年数据修改为null UPDATE dbo.EmpYearValues SET [2006] = NULL WHERE empid IN(1, 2); 设置完成之后在查询源数据:如下: ...
Excel对比Python之piovt_table(数据透视表)
Excel的数据透视表功能是平时工作非常熟悉的功能之一,也是非常强大而且基本上所有人都离不开的功能,今天来对比一下,在Excel和Python下分别对数据透视表进行操作各自的优点。 首先从网上获取一个数据,我下载了一个大小大约为5M,数据行超过十二万行的销售数据,图片是这样的 Excel篇 首先打开这个表格,有点卡顿,接下来,直接进行数据透视表的操作 会自动识别区域,然后点击在新的表格里面生...
SQL中PIVOT 行转列和UNPIVOT列转行实例讲解
PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值。 通俗简单的说:PIVOT就是行转列,UNPIVOT就是列转行 一、PIVOT实例 1. 建表 建立一个销售情况表,其中,year字段表示年份,quarter字段表示季度,am
SQL常用脚本整理(上)
点击关注公众号,SQL干货及时获取后台回复:1024,获取海量学习资源 SQL刷题专栏 SQL145题系列 大家注意: 因为微信改了推送机制,会有小伙伴刷不到当天的文章, 一些比较实用的知识和信息,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送了。工作中有许多比较常用的SQL脚本,今天开始分几章分享给大家。1、行转列的用法PIVOTCREATE table test (id int...
AI在保险产品定价优化中的创新应用
在当今保险市场中,准确合理的产品定价是保险公司实现可持续发展的关键因素之一。传统的保险产品定价主要基于经验数据和精算模型,但这种方式往往存在数据处理效率低、对复杂风险因素考虑不足等问题。本文的目的在于深入探讨AI技术如何在保险产品定价中进行创新应用,以提高定价的准确性、效率和灵活性,更好地满足市场需求和客户个性化需求。本文的范围涵盖了AI技术在保险产品定价各个环节的应用,包括风险评估、费率计算、产品设计等方面。同时,还会涉及到相关的核心算法、数学模型以及实际应用案例等内容。
5步解决断点回归(使用2SLS)
5步解决断点回归,最简单的操作(使用2SLS方法,含有样本数据和do文件),如果想要更深入了解相关内容及权威的操作步骤和方法请看我之前的帖子进行下载,谢谢。如果放在稳健性检验中可以用前面四个步骤就可以按成,如果放在主回归检验还要再去了解下最优带宽和滞后项等的检验哦
3575




被折叠的 条评论
为什么被折叠?



