需求为:

仿太平洋网站筛选。

多选类型的字段应采用‘并且’;单选和录入类型的字段应采用‘或者’

比如有如下选项:

参数头 参数体
操作系统(多选) win7 win8
运行内存(单选) 2G 4G

商品库存在有3个商品,分别为:

lenovoB111,操作系统:win7、win8,运行内存:2G

lenovoB222,操作系统:win7、win8,运行内存:4G

lenovoB333:操作系统:win10,运行内存4G

那这个时候,我吧上面的选项win7、win8、2G、4G全部勾选后,点击商品筛选按钮,生成的筛选条件应该为:

win7、win8、2G

win7、win8、4G

符合这两个筛选条件的商品将会给筛选出来,即(lenovo111&lenovo222这两台电脑)

简洁表结构为:

参数头:

id name type

参数体:

id name titleId

商品参数组成:

id product_id param_item_id

模拟参数组成记录(省略id):

(标识下以上商品对应属性id

商品:

电脑的对应id号:lenovo111:1,lenovo222:2,lenovo333:3

参数:

操作系统对应id:win7:1,win8:2,win10:3

内存对应id:2G:4,4G:5

product_id product_param_item_id
1 1
1 2
1 4
2 1
2 2
2 5
3 3
3 5

通过预想最后结果应该为1、2

查询语句(使用列转行,使结果变成以下):

product_id product_param_item_id
1 1,2,4
2 1,2,5
3 3,5

--因为t.c不可以用,所以使用子查询

select t2.product_id,t2.c from (
select t.product_id,to_char(wmsys.wm_concat(t.product_param_item_id)) c from T_EB_PRODUCT_PARAM_COMPOSE t
group by t.product_id) t2
where 1=1 and
(',' || t2.c || ',' like '%,1,%') and
(',' || t2.c || ',' like '%,2,%') and

(',' || t2.c || ',' like '%,4,%')
or
(',' || t2.c || ',' like '%,1,%') and
(',' || t2.c || ',' like '%,2,%') and

(',' || t2.c || ',' like '%,5,%');

--直接使用having过滤
select t.product_id from T_EB_PRODUCT_PARAM_COMPOSE t
group by t.product_id
having 1=1 and
(',' || t2.c || ',' like '%,1,%') and
(',' || t2.c || ',' like '%,2,%') and

(',' || t2.c || ',' like '%,4,%')
or
(',' || t2.c || ',' like '%,1,%') and
(',' || t2.c || ',' like '%,2,%') and

(',' || t2.c || ',' like '%,5,%');

【SQL】行转列过滤,使用别名和不使用别名的区别用法。的更多相关文章

  1. SQL 行转列和列转行

    SQL 行转列和列转行 行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过 ...

  2. Ms sql行转列。汇总

    SQL行转列汇总 PIVOT 用于将列值旋转为列名(即行转列),在 SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT 的一般语法是:PIVOT(聚合函数(列) FOR 列 ...

  3. sql 行专列 列转行 普通行列转换

    转载:http://www.cnblogs.com/newwind521/archive/2010/11/25/1887203.html sql 行专列 列转行 普通行列转换 /* 标题:普通行列转换 ...

  4. sql 行转列 PIVOT 列转行 UNPIVOT

    原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 ...

  5. sql 行转列总结

    原文:sql 行转列总结 PIVOT UNPIVOT的用法 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...

  6. SQL行转列 (及EAV模型获取数据)

    参考文章: http://www.williamsang.com/archives/1508.html 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列. ...

  7. SQL行转列,列转行

    SQL 行转列,列转行 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧. 行列转换就是如下图所示两种展示形式的互相转换 行转列 假如我们有下表: SELECT * FROM s ...

  8. sql 行转 列, 列转行

    行列互转 复制代码 create table test(id ),quarter int,profile int) insert into test values(,,) insert into te ...

  9. SQL行转列和列转行

    行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和 ...

  10. Sql 行转列问题总结

    行转列问题总结 1.行转列 ---1.最简单的行转列/* 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物 ...

随机推荐

  1. JavaWeb学习过程 之c3p0的使用

    这几天在学习使用MVC模式来做几个小项目,在学习的过程中,用到了数据库连接池.便特意去学习了一下. 一.谈一谈为什么要使用数据库连接池 在开发基于数据库的web程序时,传统的模式(在servlet,b ...

  2. C++中 指针 与 引用 的区别

    四点区别:可否为空,可否修改,使用时是否需要判断,使用场景 非空区别. 引用必须指向某个对象,而指针可以指向空. 可修改区别. 引用总是与初始化时的那个对象绑定,不可变更:指针可以重新赋值,指向另外一 ...

  3. BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币( dp )

    背包dp.. -------------------------------------------------------------------------------- #include< ...

  4. 5.6.3.7 localeCompare() 方法

    与操作字符串有关的最后一个方法是localeCompare(),这个方法比较两个字符串,并返回下列值中的一个: 如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大多数情况下是-1,具体的值 ...

  5. jackson的简单实用实例(json)

    一个json格式的字符串比如: {"status":10001,"code":"HDkGzI","pubkey":&qu ...

  6. QT IP输入框正则表达式(使用QLineEdit的setValidator函数)

    /* ip输入框正则表达式 */ // IP 前3段 QRegExp regExp("[0-9][0-9.][0-9.][.]"); ui->lineEdit_1->s ...

  7. Google Play和基于Feature的过滤 —— Feature 参考手册

    翻译自 Features Reference 下表列出了软/硬件Feature和权限的参考信息,它们被用于GooglePlay. 硬件feature 下面列出了被大多数当前发布的平台所支持的硬件功能描 ...

  8. tomcat的webappclassloader中一个奇怪的异常信息

    假设一个应用抛出大量的Class not found信息,一般你会怀疑包冲突.但是tomcat的webappclassloader却有这种问题: 假设一个应用公布出现故障, webappclasslo ...

  9. leetcode_question_70 Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  10. c#程序将excel文件转换成xml文件

    要程序你自己去组装去,我只写两个部分,一个是读Excel的部分,然后是写入到xml的1) 从指定的excel读出信息string strConn="provider=Microsoft.Je ...