请教这种交集式的SQL语言应该如何写
请问这种交集式的SQL语言应该怎么写?
客户名称 产品名称 单价
公用报价 小米 1000
公用报价 三星 2000
张三 苹果 3000
张三 华为 2000
张三 小米 980
现要求生成如下的结果
张三 小米 980
张三 三星 2000
张三 苹果 3000
张三 华为 2000
-------------------------------------------------------
也就是说 生成一个张三的报价单.
公用报价里的有的 都调出来.
张三的也调出来.
重复的按张三 自己的为准.
------解决思路----------------------
用ISNULL()简单搞定
客户名称 产品名称 单价
公用报价 小米 1000
公用报价 三星 2000
张三 苹果 3000
张三 华为 2000
张三 小米 980
现要求生成如下的结果
张三 小米 980
张三 三星 2000
张三 苹果 3000
张三 华为 2000
-------------------------------------------------------
也就是说 生成一个张三的报价单.
公用报价里的有的 都调出来.
张三的也调出来.
重复的按张三 自己的为准.
------解决思路----------------------
用ISNULL()简单搞定
/* 测试数据
WITH table1(客户名称,产品名称,单价) AS
(
SELECT '公用报价','小米',1000 UNION ALL
SELECT '公用报价','三星',2000 UNION ALL
SELECT '张三','苹果',3000 UNION ALL
SELECT '张三','华为',2000 UNION ALL
SELECT '张三','小米',980
) */
SELECT '张三' 客户名称,
ISNULL(t1.产品名称,t2.产品名称) 产品名称,
ISNULL(t1.单价,t2.单价) 单价
FROM (SELECT 产品名称,单价
FROM table1
WHERE 客户名称 = '张三'
) t1
FULL JOIN (SELECT 产品名称,单价
FROM table1
WHERE 客户名称 = '公用报价'
) t2
ON t1.产品名称 = t2.产品名称
客户名称 产品名称 单价
-------- -------- -----------
张三 苹果 3000
张三 华为 2000
张三 小米 980
张三 三星 2000