m**********2 发帖数: 2252 | 1 有如下的query,但是count=0的status不会被显示。我怎样才能得让count=0的status
也显示呢?有table2列出了全部的status。不知道怎样用isnull。SQL server。谢谢帮
忙。。。
SELECT product, [Status],COUNT(*) AS StatusCnt FROM table1
GROUP BY product,[Status]
ORDER BY product,[Status] |
B*****g 发帖数: 34098 | 2 看见包子我就来了,可惜题没看懂。
不过我猜下面的link有点用
http://www.w3schools.com/Sql/sql_join.asp
status
【在 m**********2 的大作中提到】 : 有如下的query,但是count=0的status不会被显示。我怎样才能得让count=0的status : 也显示呢?有table2列出了全部的status。不知道怎样用isnull。SQL server。谢谢帮 : 忙。。。 : SELECT product, [Status],COUNT(*) AS StatusCnt FROM table1 : GROUP BY product,[Status] : ORDER BY product,[Status]
|
m**********2 发帖数: 2252 | 3 谢谢你哈。我可能说的不是很清楚哈。不过我用了excel的pivot table,pivotchart
report把问题搞定了。我想我可能要create一个 new table, includes all code for
product,status,然后 right/left join,用isnull。
【在 B*****g 的大作中提到】 : 看见包子我就来了,可惜题没看懂。 : 不过我猜下面的link有点用 : http://www.w3schools.com/Sql/sql_join.asp : : status
|
c*****d 发帖数: 6045 | 4 终于看懂问啥呢
建一个新表,包含所有的status
然后
select product, [Status],COUNT(*) AS StatusCnt
from orders o right join order_status s
on o.[Status]=s.[Status]
where product is not null and [Status] is not null
group by product, [Status] |
c*****t 发帖数: 1879 | 5 我觉得可以用你之前的 query,union 一下 product, status, 0,然后 group by
然后 max 第三 column 。
for
【在 m**********2 的大作中提到】 : 谢谢你哈。我可能说的不是很清楚哈。不过我用了excel的pivot table,pivotchart : report把问题搞定了。我想我可能要create一个 new table, includes all code for : product,status,然后 right/left join,用isnull。
|
j*****n 发帖数: 1781 | 6 A little complex job... worth 2 baozi ha :)
Table1: Product, Status
Table2: Status -- I assume that this is the ref table with list of all
status, right?
What you will lean from it:
Sub-queries
CASE statement
SUM function
RIGHT JOIN
CROSS JOIN
IS NULL
Lets begin...
SELECT A.Product, A.Status, SUM(A.Cnt) AS StatusCnt
FROM (
SELECT CASE
WHEN A1.Product IS NULL THEN 0
ELSE 1
END AS Cnt,
B1.Product,
B1.Status
FROM table1 A1
RIGHT JOIN (
SE |
B*****g 发帖数: 34098 | 7 你和我差不多,正在冥思苦想更好的。
【在 j*****n 的大作中提到】 : A little complex job... worth 2 baozi ha :) : Table1: Product, Status : Table2: Status -- I assume that this is the ref table with list of all : status, right? : What you will lean from it: : Sub-queries : CASE statement : SUM function : RIGHT JOIN : CROSS JOIN
|
j*****n 发帖数: 1781 | 8 嗯,我一般喜欢先把逻辑整清楚了,再考虑performance.
拭目以待你的方法...
【在 B*****g 的大作中提到】 : 你和我差不多,正在冥思苦想更好的。
|
m**********2 发帖数: 2252 | 9 好吧,2个包子吧....
不过我很快就会破产了....哎.....
【在 j*****n 的大作中提到】 : A little complex job... worth 2 baozi ha :) : Table1: Product, Status : Table2: Status -- I assume that this is the ref table with list of all : status, right? : What you will lean from it: : Sub-queries : CASE statement : SUM function : RIGHT JOIN : CROSS JOIN
|
m**********2 发帖数: 2252 | 10 明天回公司试试...有bug的话,要负责哈.....
【在 j*****n 的大作中提到】 : A little complex job... worth 2 baozi ha :) : Table1: Product, Status : Table2: Status -- I assume that this is the ref table with list of all : status, right? : What you will lean from it: : Sub-queries : CASE statement : SUM function : RIGHT JOIN : CROSS JOIN
|
|
|
j*****n 发帖数: 1781 | 11 aha? ok... 12hrs warranty... start counting now... ^L^
【在 m**********2 的大作中提到】 : 明天回公司试试...有bug的话,要负责哈.....
|
m**********2 发帖数: 2252 | 12 already running for 9 minutes, still waiting....seems that it will running
forever and no result back ya....
【在 j*****n 的大作中提到】 : aha? ok... 12hrs warranty... start counting now... ^L^
|
m**********2 发帖数: 2252 | 13 嗯。。。不准备再等了。。。20分钟没有结果。。。
那2个包子就当我的credit吧。。。暂时先放你那里吧。。。
【在 m**********2 的大作中提到】 : already running for 9 minutes, still waiting....seems that it will running : forever and no result back ya....
|
m**********2 发帖数: 2252 | 14 嗯。。稍微改了一下,OK啦。。
SELECT A.Product, A.Status, SUM(A.Cnt) AS StatusCnt
FROM (
SELECT CASE
WHEN A1.Product IS NULL THEN 0
ELSE 1
END AS Cnt,
B1.Product,
B1.Status
FROM tbl1 A1 RIGHT JOIN
(SELECT A2.Product, B2.Status
FROM (
(SELECT DISTINCT product FROM tbl1) A2
CROSS JOIN (SELECT DISTINCT status FROM tbl2) B2))B1 ON A1.Product = B1.
Product AND A1.Status = B1.Status) A
GROUP BY A.Product, A.Status
ORDER BY A.Product, A.Status
【在 m**********2 的大作中提到】 : 嗯。。。不准备再等了。。。20分钟没有结果。。。 : 那2个包子就当我的credit吧。。。暂时先放你那里吧。。。
|
B*****g 发帖数: 34098 | 15 Try this one?
SELECT a.Product,
b.Status,
SUM(CASE WHEN a.Status = b.Status THEN
1
ELSE
0
END) AS Cnt
FROM table1 a CROSS JOIN table2 b
GROUP BY a.Product, b.Status
【在 m**********2 的大作中提到】 : 嗯。。稍微改了一下,OK啦。。 : SELECT A.Product, A.Status, SUM(A.Cnt) AS StatusCnt : FROM ( : SELECT CASE : WHEN A1.Product IS NULL THEN 0 : ELSE 1 : END AS Cnt, : B1.Product, : B1.Status : FROM tbl1 A1 RIGHT JOIN
|
m**********2 发帖数: 2252 | 16 good....work!!!
【在 B*****g 的大作中提到】 : Try this one? : SELECT a.Product, : b.Status, : SUM(CASE WHEN a.Status = b.Status THEN : 1 : ELSE : 0 : END) AS Cnt : FROM table1 a CROSS JOIN table2 b : GROUP BY a.Product, b.Status
|
c*****d 发帖数: 6045 | 17 how about my SQL? does it work?
【在 m**********2 的大作中提到】 : good....work!!!
|