Redian新闻
>
请教大虾问题哈,包子谢哈
avatar
请教大虾问题哈,包子谢哈# Database - 数据库
m*2
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]
avatar
B*g
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]

avatar
m*2
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

avatar
c*d
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]
avatar
c*t
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。

avatar
j*n
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
avatar
B*g
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

avatar
j*n
8
嗯,我一般喜欢先把逻辑整清楚了,再考虑performance.
拭目以待你的方法...

【在 B*****g 的大作中提到】
: 你和我差不多,正在冥思苦想更好的。
avatar
m*2
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

avatar
m*2
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

avatar
j*n
11
aha? ok... 12hrs warranty... start counting now... ^L^

【在 m**********2 的大作中提到】
: 明天回公司试试...有bug的话,要负责哈.....
avatar
m*2
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^
avatar
m*2
13
嗯。。。不准备再等了。。。20分钟没有结果。。。
那2个包子就当我的credit吧。。。暂时先放你那里吧。。。

【在 m**********2 的大作中提到】
: already running for 9 minutes, still waiting....seems that it will running
: forever and no result back ya....

avatar
m*2
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吧。。。暂时先放你那里吧。。。

avatar
B*g
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

avatar
m*2
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

avatar
c*d
17
how about my SQL? does it work?

【在 m**********2 的大作中提到】
: good....work!!!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。