我在这里有一个示例表,我想将“items out”减去“items in”但是它给了我一个null,这意味着这个项目中没有out并且我希望null应该是值“中的物品”。
|ItemCode | Qty |isIN|isOUT|
|---------|-----|----|-----|
| 1 |2 | 1 | 0 |
|---------|-----|----|-----|
| 2 |5 | 1 | 0 |
|---------|-----|----|-----|
| 3 | 1 | 1 | 0 |
|---------|-----|----|-----|
| 4 | 2 | 1 | 0 |
|---------|-----|----|-----|
| 10 | 14 | 1 | 0 |
|---------|-----|----|-----|
| 10 | 1 | 0 | 1 |
|---------|-----|----|-----|
| 10 | 1 | 0 | 1 |
|---------|-----|----|-----|
| 12 | 1 |1 | 0 |
|---------|-----|----|-----|
| 12 | 1 | 0 | 1 |
|---------|-----|----|-----|
| 13 | 1 | 1 | 0 |
|---------|-----|----|-----|
| 14 | 2 | 1 | 0 |
|---------|-----|----|-----|
| 14 | 1 |0 |1 |
我的疑问就是这个。
SELECT i.ItemCode, Sum(i.Qty)-(select Sum(Qty) from INVENTORY where isOUT = 1 and i.ItemCode = ItemCode)as Qty
FROM INVENTORY i
WHERE isIN = 1
GROUP BY i.ItemCode
结果如下:
|ItemCode | Qty |
|---------|-----|
| 1 |NULL |
|---------|-----|
| 2 |NULL |
|---------|-----|
| 3 |NULL |
|---------|-----|
| 4 |NULL |
|---------|-----|
| 10 | 12 |
|---------|-----|
| 12 | 0 |
|---------|-----|
| 13 | NULL|
|---------|-----|
| 14 | 1 |
|---------|-----|
答案 0 :(得分:1)
SELECT i.ItemCode, Sum(ISNULL(i.Qty,0))-(select Sum(ISNULL(Qty,0)) from INVENTORY where isOUT = 1 and i.ItemCode = ItemCode)as Qty
FROM INVENTORY i
WHERE isIN = 1
GROUP BY i.ItemCode
使用
ISNULL(列,值)
因此,如果该值为null,则将其视为0(或您喜欢的任何值)
答案 1 :(得分:1)
我这里有一个示例表,我想减去"项目"至 "
中的"项目
我认为你只想要条件聚合:
# original list
my_list = [10,50,20,'STRING',5]
# Creating temporary list with all numbers in sorted order and reverse
# reversed such that we use pop() which is efficient in time complexity
sorted_list = sorted([element for element in my_list if not isinstance(element, str)], reverse=True)
# new list to append accordingly
new_list = []
# for each element if it is string then in new list it has same position as in original list
# else if it was originally number then, we append the respective sorted number
for index, element in enumerate(my_list):
if isinstance(element, str):
new_list.append(element)
else:
new_list.append(sorted_list.pop())
new_list
根本不需要子查询。