需求为:

仿太平洋网站筛选。

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

比如有如下选项:

参数头 参数体
操作系统(多选) 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. java动手动脑课后思考题

    public class SquareInt { public static void main(String[] args) { int result; ; x <= ; x++) { res ...

  2. Eclipse怎么全局搜索替换(整个项目)

    链接地址:http://jingyan.baidu.com/article/3ea51489c1c0d752e61bba2e.html 我们用Eclipse编程,有时候需要将整个项目的某个字符串替换成 ...

  3. sqlserver 只有函数和扩展存储过程才能从函数内部执行

    一个SQLServer的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行". 原因:函数只能使用简单的sql语句,逻辑控制语句,复杂 ...

  4. Loadrunner11点击录制脚本无响应,IE页面弹不出——解决方案汇总

    以前用Loadrunner的时候都没有遇到过这个问题,后来将服务器重装系统(win7)后,重新安装Loadrunner11,浏览器版本刚开始为IE11,后来降为IE8,IE访问部署在虚拟机里的平台能正 ...

  5. (Problem 62)Cubic permutations(待续)

    The cube, 41063625 (3453), can be permuted to produce two other cubes: 56623104 (3843) and 66430125 ...

  6. LintCode-删除元素

    题目描述: 给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度. 元素的顺序可以改变,并且对新的数组不会有影响. 样例 给出一个数组 [0,4,4,0,0,2,4,4],和值 4 返回 ...

  7. Libev学习笔记1

    和Libevent相似,Libev是一个高性事件驱动框架,据说性能比Libevent要高,bug比Libevent要少.Libev只是一个事件驱动框架,不是网络库,因为它的内部并没有任何socket编 ...

  8. HDU 1796 容斥原理 How many integers can you find

    题目连接   http://acm.hdu.edu.cn/showproblem.php?pid=1796 处男容斥原理  纪念一下  TMD看了好久才明白DFS... 先贴代码后解释 #includ ...

  9. c 对某个整数做因式分解

    1 #include <stdio.h> int main(void) { int n,i; scanf("%d",&n); printf("%d=& ...

  10. Android中的一些基础知识(三)

    最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 在TextView中显示图像(使用< img>标签) 在TextView中显示图片的方法有许 ...