我有一个选择查询,它给了我所需的结果。这就是我从查询中获取数据的原因:
RXID| NoOfRx| DrName |HospitalName |SBOID
----|---------|---------------------|-----------------------|-------------
82 | 2 |dr abcdefgh kjk |sdmh hospital |56183
82 | 2 |dr abcdefgh kjk |sdmh hospital |56183
82 | 2 |dr abcdefgh kjk |sdmh hospital |56183
82 | 2 |dr abcdefgh kjk |sdmh hospital |56183
82 | 2 |dr abcdefgh kjk |sdmh hospital |56183
83 | 1 |dr kkkk jjjj |nakaoana hospital |56183
152 | 1 |dr dskhjgjhgjhhghjghg|sms hospital, jaireur |56183
这就是我想要的:
RXID| NoOfRx| DrName |HospitalName |SBOID
----|---------|---------------------|-----------------------|-------------
82 | 2 |dr abcdefgh kjk |sdmh hospital |56183
82 | 0 |dr abcdefgh kjk |sdmh hospital |56183
82 | 0 |dr abcdefgh kjk |sdmh hospital |56183
82 | 0 |dr abcdefgh kjk |sdmh hospital |56183
82 | 0 |dr abcdefgh kjk |sdmh hospital |56183
83 | 1 |dr kkkk jjjj |nakaoana hospital |56183
152 | 1 |dr dskhjgjhgjhhghjghg|sms hospital, jaireur |56183
对于每个重复RXID
,NoOfRx
列的其余部分应该为零。我该怎么做?任何帮助将不胜感激。
答案 0 :(得分:1)
这是未经测试的,但可能类似于:
SELECT RXID,
CASE ROW_NUMBER() OVER (PARTITION BY RXID ORDER BY (SELECT NULL)/*I can see no unique ID in your table*/) WHEN 1 THEN NoOfRx ELSE 0 END AS NoOfRx
DrName,
HospitalName,
SBOID
FROM YourTable;
值为NoOfRx
的行将随机,因为没有可用于创建订单的唯一键。
答案 1 :(得分:1)
这可能会对你有帮助。
;WITH CTE AS
(
SELECT 82 AS RXID , 2 AS NoOfRx,'dr abcdefgh kjk' AS DrName,'sdmh hospital' AS HospitalName,56183 AS SBOID
UNION ALL SELECT 82 , 2 ,'dr abcdefgh kjk' ,'sdmh hospital', 56183
UNION ALL SELECT 82 , 2 ,'dr abcdefgh kjk' ,'sdmh hospital', 56183
UNION ALL SELECT 82 , 2 ,'dr abcdefgh kjk' ,'sdmh hospital', 56183
UNION ALL SELECT 82 , 2 ,'dr abcdefgh kjk' ,'sdmh hospital', 56183
UNION ALL SELECT 83 , 1 ,'dr kkkk jjjj' ,'nakaoana hospital', 56183
UNION ALL SELECT 152 , 1 ,'dr dskhjgjhgjhhghjghg','sms hospital,jaireur',56183
)
SELECT RXID
,CASE ROW_NUMBER() OVER(PARTITION BY NoOfRx ORDER BY (SELECT 1)) WHEN 1 THEN NoOfRx ELSE 0 END AS NoOfRx
,DrName,HospitalName,SBOID
FROM CTE