【发布时间】:2019-06-05 04:16:00
【问题描述】:
这是我关于 stackoverflow 的第一个问题,如果它不是那么容易理解,我很抱歉。 我不知道这是否可能。
这是一个 TSQL 查询示例:
+--------+---------------------+---------------+-------+--------------------+
| Month | Like_for_like_sales | Filial_number | Sales | PreviousYear_Sales |
+--------+---------------------+---------------+-------+--------------------+
| 201712 | 1 | 12345 | 132 | 164 |
| 201801 | 1 | 12345 | 143 | 167 |
| 201802 | 1 | 12345 | 145 | 134 |
| 201803 | 1 | 12345 | 165 | 176 |
| 201804 | 1 | 12345 | 164 | 145 |
| 201805 | 1 | 12345 | 186 | 145 |
| 201806 | 1 | 12345 | 176 | 165 |
| 201807 | 1 | 12345 | 187 | 121 |
| 201808 | 1 | 12345 | 134 | 134 |
| 201809 | 1 | 12345 | 123 | 165 |
| 201810 | 1 | 12345 | 111 | 134 |
| 201811 | 1 | 12345 | 143 | 156 |
| 201712 | NULL | 54321 | 132 | NULL |
| 201801 | NULL | 54321 | 143 | NULL |
| 201802 | NULL | 54321 | 145 | NULL |
| 201803 | NULL | 54321 | 165 | NULL |
| 201804 | NULL | 54321 | 164 | NULL |
| 201805 | NULL | 54321 | 186 | NULL |
| 201806 | NULL | 54321 | 176 | 165 |
| 201807 | 1 | 54321 | 187 | 121 |
| 201808 | 1 | 54321 | 134 | 134 |
| 201809 | 1 | 54321 | 123 | 165 |
| 201810 | 1 | 54321 | 111 | 134 |
| 201811 | 1 | 54321 | 143 | 156 |
+--------+---------------------+---------------+-------+--------------------+
现在我希望如果Like_for_like_sales 的一列是NULL,那么特定Filial_number 的每一列也应该是NULL
在此示例中,Like_for_like_sales 的某些列与 Filial_number54321 为 NULL,因此 Like_for_like_sales 的所有其他列与Filial_number 54321也应该设置为NULL。
最后应该是这样的:
+--------+---------------------+---------------+-------+--------------------+
| Month | Like_for_like_sales | Filial_number | Sales | PreviousYear_Sales |
+--------+---------------------+---------------+-------+--------------------+
| 201712 | 1 | 12345 | 132 | 164 |
| 201801 | 1 | 12345 | 143 | 167 |
| 201802 | 1 | 12345 | 145 | 134 |
| 201803 | 1 | 12345 | 165 | 176 |
| 201804 | 1 | 12345 | 164 | 145 |
| 201805 | 1 | 12345 | 186 | 145 |
| 201806 | 1 | 12345 | 176 | 165 |
| 201807 | 1 | 12345 | 187 | 121 |
| 201808 | 1 | 12345 | 134 | 134 |
| 201809 | 1 | 12345 | 123 | 165 |
| 201810 | 1 | 12345 | 111 | 134 |
| 201811 | 1 | 12345 | 143 | 156 |
| 201712 | NULL | 54321 | 132 | NULL |
| 201801 | NULL | 54321 | 143 | NULL |
| 201802 | NULL | 54321 | 145 | NULL |
| 201803 | NULL | 54321 | 165 | NULL |
| 201804 | NULL | 54321 | 164 | NULL |
| 201805 | NULL | 54321 | 186 | NULL |
| 201806 | NULL | 54321 | 176 | 165 |
| 201807 | NULL | 54321 | 187 | 121 |
| 201808 | NULL | 54321 | 134 | 134 |
| 201809 | NULL | 54321 | 123 | 165 |
| 201810 | NULL | 54321 | 111 | 134 |
| 201811 | NULL | 54321 | 143 | 156 |
+--------+---------------------+---------------+-------+--------------------+
这是我为这个问题做的示例查询,所以你可以自己尝试一下:
WITH test (MONTH, Like_for_like_sales, Filial_number, Sales, PreviousYear_Sales) AS
(
SELECT 201712, 1, 12345, 132, 164
UNION
SELECT 201801, 1, 12345, 143, 167
UNION
SELECT 201803, 1, 12345, 165, 176
UNION
SELECT 201804, 1, 12345, 164, 145
UNION
SELECT 201805, 1, 12345, 186, 145
UNION
SELECT 201806, 1, 12345, 176, 165
UNION
SELECT 201807, 1, 12345, 187, 121
UNION
SELECT 201808, 1, 12345, 134, 134
UNION
SELECT 201809, 1, 12345, 123, 165
UNION
SELECT 201810, 1, 12345, 111, 134
UNION
SELECT 201811, 1, 12345, 143, 156
UNION
SELECT 201712, NULL, 54321, 132, NULL
UNION
SELECT 201801, NULL, 54321, 143, NULL
UNION
SELECT 201802, NULL, 54321, 145, NULL
UNION
SELECT 201803, NULL, 54321, 165, NULL
UNION
SELECT 201804, NULL, 54321, 164, NULL
UNION
SELECT 201805, NULL, 54321, 186, NULL
UNION
SELECT 201806, NULL, 54321, 176, 165
UNION
SELECT 201807, 1, 54321, 187, 121
UNION
SELECT 201808, 1, 54321, 134, 134
UNION
SELECT 201809, 1, 54321, 123, 165
UNION
SELECT 201810, 1, 54321, 111, 134
UNION
SELECT 201811, 1, 54321, 143, 156
)
SELECT Month, Like_for_like_sales, Filial_number, Sales, PreviousYear_Sales
FROM test
ORDER BY Filial_number, Month
感谢您的帮助!
【问题讨论】:
-
简化您的问题以获得更好的响应! stackoverflow.com/help/mcve
标签: sql tsql reporting-services