我需要生成一份报告,我会跟踪某个地点的入站和出站货件,结果是每个SKU进出的数量都计算在内。
“入站”SKU将 dest_loc 设置为“LOC1”,而“出站”SKU将 source_loc 设置为“LOC1”, LOC1是参考位置。
有一个名为“REC”的特殊目的地值,意思是“再生”。
每个SKU都有source_loc和dest_loc值(无空例)。此示例有三个SKU和5个可能的位置。
sku source_loc dest_loc
sku1 LOC2 LOC1
sku1 LOC1 LOC1 <-- src=dest is a valid case
sku2 LOC3 LOC1
sku3 LOC4 LOC1
sku3 LOC4 LOC1
sku3 LOC1 LOC4
sku3 LOC1 LOC3
sku1 LOC1 LOC2
sku2 LOC3 LOC1
sku2 LOC1 REC
最终报告如下:
sku inbound outbound recycle
sku1 2 1 0
sku2 2 0 1
sku3 2 2 0
我可以使用以下方法获得一个半数据:
SELECT sku, count(*)
FROM skudata
WHERE `dest_loc` = "LOC1"
GROUP BY `sku`, `source_loc`
ORDER BY `sku`;
我还需要添加WHERE source_loc =&#34; LOC1&#34;。我可以单独运行两个查询,但是我必须将结果拼接在一起,这将是一个痛苦。我怎样才能更好地编写查询以包含&#34;方向&#34;?
答案 0 :(得分:0)
查看您的数据似乎表明您正在寻找不同的计数
function loadPage(url){
var xhr= new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange= function() {
if (this.readyState!==4) return;
if (this.status!==200) return;
document.getElementById('maindiv').innerHTML= this.responseText;
};
xhr.send();
}
答案 1 :(得分:0)
您正在寻找多个WHERE语句。这些可以作为条件放在SELECT部分中:
SELECT
sku,
SUM(IF(dest_loc = 'LOC1', 1, 0)) AS inbound,
SUM(IF(source_loc = 'LOC1', 1, 0)) AS outbound,
SUM(IF(dest_loc = 'REC' , 1, 0)) AS recycle
FROM skudata
GROUP BY sku