如何将多行组合到一行中,以便一行中的某些列替换与其合并的另一行中相同列中的空值? 下面是我有什么和我想要实现的例子。查询是:将多行组合成一行以替换列中的空值
SELECT Drug. Name,
DefaultVendor.Name,
Drug.Strength,
Catalog.DIN,
Catalog.PackSize,
“Vendor1 Price” = CASE WHEN Ven.Name = ‘Vendor1’ THEN Catalog.Price ELSE NULL END,
“Vendor1 ItemNum” = CASE WHEN Ven.Name = ‘Vendor1’ THEN Catalog.ItemNum ELSE NULL END,
“Vendor2 Price” = CASE WHEN Ven.Name = ‘Vendor2’ THEN Catalog.Price ELSE NULL END,
“Vendor2 ItemNum” = CASE WHEN Ven.Name = ‘Vendor2’ THEN Catalog.ItemNum ELSE NULL END
FROM Catalog INNER JOIN
Drug ON Catalog.DIN = Drug.DIN INNER JOIN
Vendor AS Ven ON Ven.ID = Catalog.VendorID LEFT JOIN
Vendor AS DefaultVendor ON DefaultVendor.ID = Catalog.DefVendorID OR (DefaultVendor.ID IS NULL)
WHERE Catalog.Description LIKE ‘Acetaminophen%’
GROUP BY Ven.Name,
Drug.Name,
Drug.Strength,
Catalog.DIN,
Catalog.PackSize,
Catalog.Price,
Catalog.ItemNum
ORDER BY Drug.Strength
该吐出来的结果是这样的:
| Name | DefaultVendor | Strength | DIN | PackSize | Vendor1Price | Vendor1ItemNum | Vendor2Price | Vendor2ItemNum |
|---------------|---------------|----------|-----|----------|--------------|----------------|--------------|----------------|
| Acetaminophen | Vendor1 | 325mg | 1 | 100 | 5 | 1234 | (null) | (null) |
| Acetaminophen | Vendor1 | 325mg | 1 | 200 | 9 | 1235 | (null) | (null) |
| Acetaminophen | Vendor1 | 325mg | 1 | 100 | (null) | (null) | 5.25 | 1111 |
| Acetaminophen | Vendor1 | 325mg | 1 | 200 | (null) | (null) | 10 | 1122 |
| Acetaminophen | Vendor1 | 500mg | 2 | 100 | 7 | 1236 | (null) | (null) |
| Acetaminophen | Vendor1 | 500mg | 2 | 200 | 13 | 1237 | (null) | (null) |
| Acetaminophen | Vendor1 | 500mg | 2 | 100 | (null) | (null) | 7.5 | 1133 |
| Acetaminophen | Vendor1 | 500mg | 2 | 200 | (null) | (null) | 14 | 1144 |
所以我知道数据是存在的。我想要做的就是将具有相同强度的行和打包大小相结合,以便单行显示来自两个供应商的价格和物料编号。以下是我正在寻找的结果:
| Name | DefaultVendor | Strength | DIN | PackSize | Vendor1Price | Vendor1ItemNum | Vendor2Price | Vendor2ItemNum |
|---------------|---------------|----------|-----|----------|--------------|----------------|--------------|----------------|
| Acetaminophen | Vendor1 | 325mg | 1 | 100 | 5 | 1234 | (null) | (null) |
| Acetaminophen | Vendor1 | 325mg | 1 | 200 | 9 | 1235 | (null) | (null) |
| Acetaminophen | Vendor1 | 325mg | 1 | 100 | (null) | (null) | 5.25 | 1111 |
你有解释你的合并逻辑。也尝试将数据包含为文本,因为我们无法从图片复制/粘贴。 \t请阅读[**如何提问**](http://stackoverflow.com/help/how-to-ask) \t \t这里是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)了解如何提高您的问题质量并获得更好的答案。 –
使用control-k将文本格式设置为代码 –
我使用纯文本而不是照片添加了数据,但它几乎不可读,因为它没有以适当的“表”格式显示,而且看起来我无法使用HTML表格以这种方式格式化数据。编辑:Ctrl-K技巧工作。 –